diff --git a/.agents/skills/changelog-entries/SKILL.md b/.agents/skills/changelog-entries/SKILL.md new file mode 100644 index 0000000000..5ccd0fd068 --- /dev/null +++ b/.agents/skills/changelog-entries/SKILL.md @@ -0,0 +1,79 @@ +--- +name: changelog-entries +description: > + Write changelog entries for CHANGELOG.md. Use when work has been completed + and changelog entries need to be added, or when the user asks to write, add, or update changelog + entries, release notes, or document changes. Triggers on requests like "add changelog entry", + "update the changelog", "write release notes", or after completing a feature/fix that needs documenting. +--- + +# Changelog Entries + +Write entries that match the established format in the target changelog file. + +## Determine Target File + +1. If the user specifies a file, use that, otherwise use `CHANGELOG.md`. +2. Read the first ~80 lines of the target file to confirm the current format and find the insertion point. + +## CHANGELOG.md Format + +Versioned release changelog. Entries go under `## Unreleased` or a version header like `## X.Y.Z - YYYY-MM-DD`. + +Each entry is a `- ` prefixed line. No blank lines between entries within a section. + +```markdown +## Unreleased + +- Added `craft\helpers\SomeHelper::someMethod()`. +- Fixed a bug where something wasn't working properly. ([#12345](https://github.com/craftcms/cms/pull/12345)) +- Deprecated `craft\old\Thing`. `craft\new\Thing` should be used instead. +``` + +**Patch releases** use a flat list with no subheaders. + +**Major/minor releases** may group entries under `###` subheaders: +`### Content Management`, `### Accessibility`, `### Administration`, `### Development`, `### Extensibility`, `### System` + +**Warnings** go above the entry list using GitHub callout syntax: +```markdown +> [!WARNING] +> Important note about breaking changes. +``` + +## Writing Rules + +1. **Start with a past-tense verb** — capitalize it: + - `Added` — new classes, methods, features, settings + - `Fixed` — bug fixes: `Fixed a bug where...` or `Fixed an error that...` + - `Deprecated` — include replacement: `` `old\Thing`. `new\Thing` should be used instead. `` + - `Removed` — removed classes/features (with replacement if applicable) + - `Improved` — performance or UX improvements + - Other verbs as appropriate: `Updated`, `Renamed`, `Moved`, `Replaced` + +2. **Backtick all code references** — class names, methods, properties, constants, config keys, Twig variables, CLI commands. Use fully qualified class names (no leading backslash). + +3. **One entry per line** — don't wrap. Each `- ` entry is a single line regardless of length. + +4. **End entries with a period.** + +5. **Link issues/PRs** at the end when applicable, prefer PRs when there is one: + - PRs: `([#12345](https://github.com/craftcms/cms/pull/12345))` + - Issues: `([#12345](https://github.com/craftcms/cms/issues/12345))` + - Security: `(GHSA-xxxx-xxxx-xxxx)` + - External repos: `([craftcms/commerce#4006](https://github.com/craftcms/commerce/issues/4006))` + +6. **Security fixes** include severity level: `` Fixed a [high-severity](https://github.com/craftcms/cms/security/policy#severity--remediation) RCE vulnerability. (GHSA-xxxx-xxxx-xxxx) `` + +7. **Keyboard shortcuts** use `` tags: `Return`. + +## Entry Templates + +For the full set of templates and examples, see `references/entry-templates.md`. + +## Workflow + +1. Identify what changed (from conversation context, git diff, or user description). +2. Determine the target file and section/insertion point. +3. Write entries following the format rules above. +4. Insert entries in the appropriate location in the file. diff --git a/.agents/skills/changelog-entries/references/entry-templates.md b/.agents/skills/changelog-entries/references/entry-templates.md new file mode 100644 index 0000000000..2dd6bdb761 --- /dev/null +++ b/.agents/skills/changelog-entries/references/entry-templates.md @@ -0,0 +1,225 @@ +# Entry Templates + +## Added + +**New class or service:** +``` +- Added `CraftCms\Cms\Namespace\ClassName`. +``` + +**New facade:** +``` +- Added `CraftCms\Cms\Support\Facades\FacadeName`. +``` + +**New enum:** +``` +- Added `CraftCms\Cms\Namespace\EnumName` enum. +``` + +**New event:** +``` +- Added `CraftCms\Cms\Namespace\Events\EventName`. +``` + +**New event with description:** +``` +- Added `CraftCms\Cms\Namespace\Events\EventName` event for customizing X behavior. +``` + +**New method or property:** +``` +- Added `craft\helpers\ElementHelper::cleanseQueryCriteria()`. +- Added `craft\base\ElementTrait::$applyingDraft`. ([#18057](https://github.com/craftcms/cms/pull/18057)) +``` + +**New method macro:** +``` +- Added `Request::isPreview()` macro for detecting preview requests via `x-craft-preview` or `x-craft-live-preview` parameters. +``` + +**New console command:** +``` +- Added `php craft twig:cache` - Precompile Twig views. +``` + +**New config setting:** +``` +- Added the `enableTwigSandbox` config setting. ([#18208](https://github.com/craftcms/cms/pull/18208)) +``` + +**New library:** +``` +- Added the Illuminate Support library. +``` + +**Multiple related additions (with sub-list):** +``` +- Added element-specific authorization policies: + - `CraftCms\Cms\Entry\Policies\EntryPolicy` + - `CraftCms\Cms\Asset\Policies\AssetPolicy` +``` + +## Fixed + +**Bug fix:** +``` +- Fixed a bug where something wasn't working properly. ([#12345](https://github.com/craftcms/cms/pull/12345)) +- Fixed a bug where Matrix fields in Blocks view could lose their existing values when they became editable. +``` + +**Error fix:** +``` +- Fixed an error that could occur when editing an element with a Table field. ([#18408](https://github.com/craftcms/cms/pull/18408)) +- Fixed an error that occurred when creating a new element on multi-site installs. ([#18393](https://github.com/craftcms/cms/pull/18393)) +``` + +**JavaScript fix:** +``` +- Fixed a JavaScript error that occurred if a Matrix field's label was hidden. ([#18366](https://github.com/craftcms/cms/pull/18366)) +- Fixed potential JavaScript errors that could occur if a disclosure menu's trigger was missing. ([#18358](https://github.com/craftcms/cms/pull/18358)) +``` + +**Security fix:** +``` +- Fixed a [high-severity](https://github.com/craftcms/cms/security/policy#severity--remediation) RCE vulnerability. (GHSA-fp5j-j7j4-mcxc) +- Fixed a [moderate-severity](https://github.com/craftcms/cms/security/policy#severity--remediation) SSTI vulnerability. (GHSA-qc86-q28f-ggww) +- Fixed [low-severity](https://github.com/craftcms/cms/security/policy#severity--remediation) XSS vulnerabilities. (GHSA-4mgv-366x-qxvx) +``` + +**Styling fix:** +``` +- Fixed a styling issue with slideouts within Live Preview. ([#18383](https://github.com/craftcms/cms/pull/18383)) +``` + +## Deprecated + +**Class replaced by new class:** +``` +- Deprecated `craft\old\ClassName`. `CraftCms\Cms\New\ClassName` should be used instead. +``` + +**Method replaced by new method:** +``` +- Deprecated `craft\old\Class::oldMethod()`. `CraftCms\Cms\New\Class::newMethod()` should be used instead. +``` + +**Property replaced:** +``` +- Deprecated `GeneralConfig::$oldProp` in favor of Laravel's config.key config value. +``` + +**Constant replaced by enum case:** +``` +- Deprecated `craft\web\View::TEMPLATE_MODE_CP`. `CraftCms\Cms\View\TemplateMode::Cp` should be used instead. +``` + +**Event constant replaced by event class:** +``` +- Deprecated `craft\web\View::EVENT_REGISTER_CP_TEMPLATE_ROOTS`. `CraftCms\Cms\View\Events\RegisterCpTemplateRoots` should be used instead. +``` + +**Twig variable replaced:** +``` +- Deprecated `craft.app.config.general` in Twig. `app.config.craft.general` should be used instead. +``` + +**Class replaced with extra context:** +``` +- Deprecated `Craft::$app->getConfig()->getGeneral()`. `CraftCms\Cms\Config\GeneralConfig` should be used instead. This can be used through dependency injection or through `app(CraftCms\Cms\Config\GeneralConfig::class)`. +``` + +**Config setting deprecated:** +``` +- The `disableGraphqlTransformDirective` config setting is now deprecated. +``` + +**Replaced by Laravel built-in (no direct Craft replacement):** +``` +- Deprecated `craft\filters\BasicHttpAuthLogin`. Use the `auth.basic` middleware instead. +``` + +**Multiple methods with "in favor of" and sub-list:** +``` +- Deprecated `craft\events\WidgetEvent` in favor of the following new events: + - `craft\services\Dashboard::EVENT_BEFORE_SAVE_WIDGET` => `CraftCms\Cms\Dashboard\Events\WidgetSaving` + - `craft\services\Dashboard::EVENT_AFTER_SAVE_WIDGET` => `CraftCms\Cms\Dashboard\Events\WidgetSaved` +``` + +**Multiple methods from same class (sub-list with arrow mapping):** +``` +- Deprecated `craft\helpers\App`. The following classes/methods should be used instead: + - `App:devMode()` --> `app()->hasDebugModeEnabled()` + - `App:parseBooleanEnv()` --> `\CraftCms\Cms\Support\Env::parseBoolean()` +``` + +## Removed + +**Class removed with replacement:** +``` +- Removed `craft\old\Class`. `CraftCms\Cms\New\Class` should be used instead. +``` + +**Class removed with multiple replacements:** +``` +- Removed `craft\controllers\DashboardController`. The following controllers now implement this functionality: + - `CraftCms\Cms\Http\Controllers\Dashboard\DashboardController` + - `CraftCms\Cms\Http\Controllers\Dashboard\WidgetsController` +``` + +**Removed because previously deprecated:** +``` +- Removed `craft\helpers\MigrationHelper` as it was deprecated since 4.0.0. +``` + +**Event removed:** +``` +- Removed `craft\events\UpdateReleaseEvent` in favor of `CraftCms\Cms\Update\Events\CriticalUpdateReleasedEvent`. +``` + +**Database column removed:** +``` +- Removed `verificationCode` and `verificationCodeIssuedDate` columns on the `users` table in favor of the `password_reset_tokens` table. +``` + +## Replaced + +``` +- Replaced `craft\controllers\StructuresController`. `CraftCms\Cms\Http\Controllers\StructuresController`. +- Replaced `craft\controllers\SystemMessagesController` with `CraftCms\Cms\Http\Controllers\Utilities\SystemMessagesController`. +``` + +## Improved + +``` +- Improved the performance of `craft\helpers\Typecast`. ([#18426](https://github.com/craftcms/cms/pull/18426)) +- Improved the accessibility of user permission lists. ([#18290](https://github.com/craftcms/cms/pull/18290)) +- Improved drag-n-drop performance. ([#18019](https://github.com/craftcms/cms/pull/18019)) +``` + +## Updated + +``` +- Updated Yii to 2.0.54. +- Updated Twig to 3.21. ([#17603](https://github.com/craftcms/cms/discussions/17603)) +- Updated Axios to 1.12.2. ([#17988](https://github.com/craftcms/cms/pull/17988)) +``` + +## Behavioral Changes (no action verb prefix) + +``` +- `CraftCms\Cms\User\Elements\User` now implements `Illuminate\Contracts\Auth\Authenticatable`. +- `craft\services\Elements::stopCollectingCacheInfo()` no longer sets the returned duration to the `cacheDuration` config setting if a duration wasn't explicitly declared. ([#16796](https://github.com/craftcms/cms/pull/16796)) +- Element indexes now show "Paste" buttons alongside bulk element action buttons. ([#18427](https://github.com/craftcms/cms/pull/18427)) +- `slug` columns referenced in element queries' `select`, `where`, or `orderBy` expressions now explicitly resolve to `elements_sites.slug`. ([#18416](https://github.com/craftcms/cms/pull/18416)) +- The `maxCachedCloudImageSize` config setting is now set to `0` by default. ([#17997](https://github.com/craftcms/cms/pull/17997)) +``` + +## Feature Descriptions (no code reference) + +``` +- Nested entries' edit screens now have a "Field settings" action menu item. +- Legacy entry index URLs now redirect `content/`. +- Bulk element actions are now available on element indexes for mobile devices. +- Revisions now keep track of which element attributes/fields were modified for the revision. +``` diff --git a/.codecov.yml b/.codecov.yml index b38c982afe..5b42cd8db2 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -27,7 +27,7 @@ ignore: - 'src/etc' - 'src/migrations' - 'src/templates' - - 'src/translations' + - 'lang' - 'src/web/assets' - 'docs' - 'templates' diff --git a/.github/actions/run-tests/action.yml b/.github/actions/run-tests/action.yml new file mode 100644 index 0000000000..6ebacbe923 --- /dev/null +++ b/.github/actions/run-tests/action.yml @@ -0,0 +1,60 @@ +name: 'Run Tests' +description: 'Setup PHP, install dependencies, and run a test command' + +inputs: + test-command: + description: 'The test command to run' + required: true + php-version: + description: 'PHP version to install' + required: false + default: '8.5' + github-token: + description: 'GitHub token for Composer' + required: false + default: '' + packagist-username: + description: 'Packagist username' + required: false + default: '' + packagist-token: + description: 'Packagist token' + required: false + default: '' + +runs: + using: 'composite' + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ inputs.php-version }} + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo, ffi + tools: composer:v2 + ini-values: display_errors=On, memory_limit=2G + coverage: none + # Pass an empty token so setup-php doesn't write GITHUB_TOKEN into + # Composer's auth config. Composer 2.9.7's regex rejects the new + # GITHUB_TOKEN format (composer/composer#12849). + github-token: '' + env: + COMPOSER_AUTH_JSON: | + { + "http-basic": { + "repo.packagist.com": { + "username": "${{ inputs.packagist-username }}", + "password": "${{ inputs.packagist-token }}" + } + } + } + + - name: Set version + shell: bash + run: composer config version "6.x-dev" + + - name: Install dependencies + uses: ramsey/composer-install@v3 + + - name: Run tests + shell: bash + run: ${{ inputs.test-command }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5e8c794175..a93f4fc425 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,26 +1,190 @@ name: ci on: workflow_dispatch: - push: - branches: - - '5.x' pull_request: -permissions: - contents: read + concurrency: group: ci-${{ github.ref }} cancel-in-progress: true + +permissions: + contents: read + jobs: - ci: - name: ci - uses: craftcms/.github/.github/workflows/ci.yml@v3 - with: - php_version: '["8.2", "8.3"]' - craft_version: '5' - node_version: '20' - jobs: '["ecs", "phpstan", "prettier", "tests", "rector"]' - notify_slack: true - slack_subteam: - secrets: - token: ${{ secrets.GITHUB_TOKEN }} - slack_webhook_url: ${{ secrets.SLACK_COMMERCE_WEBHOOK_URL }} + check-cs: + name: 'Code Quality / ECS' + runs-on: ubuntu-latest + timeout-minutes: 5 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.5' + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo + tools: composer:v2 + coverage: none + env: + COMPOSER_AUTH_JSON: | + { + "http-basic": { + "repo.packagist.com": { + "username": "${{ secrets.packagist_username }}", + "password": "${{ secrets.packagist_token }}" + } + } + } + + - name: Set version + run: composer config version "6.x-dev" + + - name: Install dependencies + uses: ramsey/composer-install@v3 + + - name: Run ECS + run: composer run check-cs + + rector: + name: 'Code Quality / Rector' + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.5' + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo + coverage: none + env: + COMPOSER_AUTH_JSON: | + { + "http-basic": { + "repo.packagist.com": { + "username": "${{ secrets.packagist_username }}", + "password": "${{ secrets.packagist_token }}" + } + } + } + + - name: Set version + run: composer config version "6.x-dev" + + - name: Install dependencies + uses: ramsey/composer-install@v3 + + - name: Rector Cache + uses: actions/cache@v4 + with: + path: /tmp/rector + key: ${{ runner.os }}-rector-${{ github.run_id }} + restore-keys: ${{ runner.os }}-rector- + + - run: mkdir -p /tmp/rector + + - name: Run Rector + run: vendor/bin/rector process --dry-run --ansi + + phpstan: + name: 'Code Quality / Phpstan' + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.5' + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo + tools: composer:v2 + coverage: none + env: + COMPOSER_AUTH_JSON: | + { + "http-basic": { + "repo.packagist.com": { + "username": "${{ secrets.packagist_username }}", + "password": "${{ secrets.packagist_token }}" + } + } + } + + - name: Set version + run: composer config version "6.x-dev" + + - name: Install composer dependencies + uses: ramsey/composer-install@v3 + + - name: PHPStan Cache + uses: actions/cache@v4 + with: + path: /tmp/phpstan + key: ${{ runner.os }}-phpstan-${{ github.run_id }} + restore-keys: ${{ runner.os }}-phpstan- + + - name: Run PHPStan + run: ./vendor/bin/phpstan --error-format=github + + unit-tests: + needs: [check-cs, phpstan, rector] + name: 'Tests / Unit' + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Run tests + uses: ./.github/actions/run-tests + with: + test-command: ./vendor/bin/pest --ci --compact --testsuite=Unit + github-token: ${{ secrets.GITHUB_TOKEN }} + packagist-username: ${{ secrets.packagist_username }} + packagist-token: ${{ secrets.packagist_token }} + + arch-tests: + needs: [check-cs, phpstan, rector] + name: 'Tests / Arch' + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Run tests + uses: ./.github/actions/run-tests + with: + test-command: ./vendor/bin/pest --ci --testsuite=Arch + github-token: ${{ secrets.GITHUB_TOKEN }} + packagist-username: ${{ secrets.packagist_username }} + packagist-token: ${{ secrets.packagist_token }} + + feature-tests: + needs: [check-cs, phpstan, rector] + # SQLite only for now — Commerce's stat/catalog-pricing queries have only been verified + # against SQLite so far. Add a mysql/pgsql matrix (see cms-6's laravel-ci.yml for the + # pattern) once those paths have been checked locally. + name: 'Tests / Feature' + runs-on: ubuntu-latest + timeout-minutes: 30 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Run tests + uses: ./.github/actions/run-tests + with: + test-command: ./vendor/bin/pest --ci --compact --testsuite=Feature + github-token: ${{ secrets.GITHUB_TOKEN }} + packagist-username: ${{ secrets.packagist_username }} + packagist-token: ${{ secrets.packagist_token }} diff --git a/.github/workflows/facades.yml b/.github/workflows/facades.yml new file mode 100644 index 0000000000..58b5dba6c0 --- /dev/null +++ b/.github/workflows/facades.yml @@ -0,0 +1,71 @@ +name: facades + +on: + push: + branches: + - 6.x + - '*.x' + + workflow_dispatch: + +permissions: + contents: write + +jobs: + update: + runs-on: ubuntu-24.04 + + strategy: + fail-fast: true + + name: Facade DocBlocks + + steps: + - name: Checkout code + uses: actions/checkout@v6 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 8.5 + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo + tools: composer:v2 + coverage: none + env: + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COMPOSER_AUTH_JSON: | + { + "http-basic": { + "repo.packagist.com": { + "username": "${{ secrets.packagist_username }}", + "password": "${{ secrets.packagist_token }}" + } + } + } + + - name: Install dependencies + uses: nick-fields/retry@v3 + with: + timeout_minutes: 5 + max_attempts: 5 + command: | + composer config repositories.facade-documenter vcs git@github.com:laravel/facade-documenter.git + composer require --dev laravel/facade-documenter:dev-main --prefer-stable --prefer-dist --no-interaction --no-progress -W + + - name: Update facade docblocks + run: | + mapfile -t facades < <(find src/Support/Facades -name '*.php' -type f | sort) + facade_classes=() + + for facade in "${facades[@]}"; do + facade_classes+=("CraftCms\\Commerce\\Support\\Facades\\$(basename "$facade" .php)") + done + + php -f vendor/bin/facade.php -- "${facade_classes[@]}" + vendor/bin/ecs check --ansi --fix "${facades[@]}" + + - name: Commit facade docblocks + uses: stefanzweifel/git-auto-commit-action@v7 + with: + commit_message: Update facade docblocks + file_pattern: src/Support/Facades/ diff --git a/.gitignore b/.gitignore index 4196d67e98..6a69229fb4 100644 --- a/.gitignore +++ b/.gitignore @@ -8,9 +8,12 @@ *aspnet_client/* node_modules/ /vendor -/tests/_craft/config/project +# Vue 3/Vite pipeline output (matches cms's own convention); legacy/'s webpack dist/ stays committed — no CI build step for it. +/public/build +/public/hot .env +.phpunit.cache *-private.md *-private.html -/claude.md /.claude +/CLAUDE.md diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000000..bf2e7648b0 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +shamefully-hoist=true diff --git a/CHANGELOG-WIP.md b/CHANGELOG-WIP.md new file mode 100644 index 0000000000..0f0c7703d2 --- /dev/null +++ b/CHANGELOG-WIP.md @@ -0,0 +1,1031 @@ +# Release Notes for Craft Commerce 6.0 (WIP) + +### Product + +- Added `CraftCms\Commerce\Product\Elements\Product`. +- Added `CraftCms\Commerce\Product\Variant\Elements\Variant`. +- Added `CraftCms\Commerce\Product\Queries\ProductQuery`. +- Added `CraftCms\Commerce\Product\Variant\Queries\VariantQuery`. +- Added `CraftCms\Commerce\Product\Models\Product`. +- Added `CraftCms\Commerce\Product\Variant\Models\Variant`. +- Added `CraftCms\Commerce\Product\ProductType\Data\ProductTypeSite`. +- Added `CraftCms\Commerce\Product\Products`. +- Added `CraftCms\Commerce\Support\Facades\Products`. +- Added `CraftCms\Commerce\Product\Variant\Variants`. +- Added `CraftCms\Commerce\Support\Facades\Variants`. +- Added `CraftCms\Commerce\Product\ProductType\Data\ProductType`. +- Added `CraftCms\Commerce\Product\ProductType\Models\ProductType`. +- Added `CraftCms\Commerce\Product\ProductType\Models\ProductTypeSite`. +- Added `CraftCms\Commerce\Product\ProductType\ProductTypes`. +- Added `CraftCms\Commerce\Support\Facades\ProductTypes`. +- Added `CraftCms\Commerce\Product\Events\CustomizeProductSnapshotDataEvent`. +- Added `CraftCms\Commerce\Product\Events\CustomizeProductSnapshotFieldsEvent`. +- Added `CraftCms\Commerce\Product\Variant\Events\CustomizeVariantSnapshotDataEvent`. +- Added `CraftCms\Commerce\Product\Variant\Events\CustomizeVariantSnapshotFieldsEvent`. +- Added `CraftCms\Commerce\Purchasable\Events\ModifyPurchasablesTableQueryEvent`. +- Added `CraftCms\Commerce\Product\Events\ProductEvent`. +- Added `CraftCms\Commerce\Product\ProductType\Events\ProductTypeEvent`. +- Added `CraftCms\Commerce\Product\Variant\Events\PurchaseVariantEvent`. +- Deprecated `craft\commerce\elements\Product`. `CraftCms\Commerce\Product\Elements\Product` should be used instead. +- Deprecated `craft\commerce\elements\Variant`. `CraftCms\Commerce\Product\Variant\Elements\Variant` should be used instead. +- Deprecated `craft\commerce\elements\db\ProductQuery`. `CraftCms\Commerce\Product\Queries\ProductQuery` should be used instead. +- Deprecated `craft\commerce\elements\db\VariantQuery`. `CraftCms\Commerce\Product\Variant\Queries\VariantQuery` should be used instead. +- Deprecated `craft\commerce\records\Product`. `CraftCms\Commerce\Product\Models\Product` should be used instead. +- Deprecated `craft\commerce\records\Variant`. `CraftCms\Commerce\Product\Variant\Models\Variant` should be used instead. +- Deprecated `craft\commerce\models\ProductType`. `CraftCms\Commerce\Product\ProductType\Data\ProductType` should be used instead. +- Deprecated `craft\commerce\models\ProductTypeSite`. `CraftCms\Commerce\Product\ProductType\Data\ProductTypeSite` should be used instead. +- Deprecated `craft\commerce\records\ProductType`. `CraftCms\Commerce\Product\ProductType\Models\ProductType` should be used instead. +- Deprecated `craft\commerce\records\ProductTypeSite`. `CraftCms\Commerce\Product\ProductType\Models\ProductTypeSite` should be used instead. +- Deprecated `craft\commerce\services\Products`. `CraftCms\Commerce\Product\Products` should be used instead. +- Deprecated `craft\commerce\services\Variants`. `CraftCms\Commerce\Product\Variant\Variants` should be used instead. +- Deprecated `craft\commerce\services\ProductTypes`. `CraftCms\Commerce\Product\ProductType\ProductTypes` should be used instead. +- Deprecated `craft\commerce\events\CustomizeProductSnapshotDataEvent`. `CraftCms\Commerce\Product\Events\CustomizeProductSnapshotDataEvent` should be used instead. +- Deprecated `craft\commerce\events\CustomizeProductSnapshotFieldsEvent`. `CraftCms\Commerce\Product\Events\CustomizeProductSnapshotFieldsEvent` should be used instead. +- Deprecated `craft\commerce\events\CustomizeVariantSnapshotDataEvent`. `CraftCms\Commerce\Product\Variant\Events\CustomizeVariantSnapshotDataEvent` should be used instead. +- Deprecated `craft\commerce\events\CustomizeVariantSnapshotFieldsEvent`. `CraftCms\Commerce\Product\Variant\Events\CustomizeVariantSnapshotFieldsEvent` should be used instead. +- Deprecated `craft\commerce\events\ModifyPurchasablesTableQueryEvent`. `CraftCms\Commerce\Purchasable\Events\ModifyPurchasablesTableQueryEvent` should be used instead. +- Deprecated `craft\commerce\events\ProductEvent`. `CraftCms\Commerce\Product\Events\ProductEvent` should be used instead. +- Deprecated `craft\commerce\events\ProductTypeEvent`. `CraftCms\Commerce\Product\ProductType\Events\ProductTypeEvent` should be used instead. +- Deprecated `craft\commerce\events\PurchaseVariantEvent`. `CraftCms\Commerce\Product\Variant\Events\PurchaseVariantEvent` should be used instead. +- Removed `craft\commerce\records\ProductTypeShippingCategory` as it was unused. +- Removed `craft\commerce\records\ProductTypeTaxCategory` as it was unused. +- Added `CraftCms\Commerce\Product\Conditions\ProductCondition`, `ProductTypeConditionRule`, `ProductVariantSearchConditionRule`, `ProductVariantSkuConditionRule`, `ProductVariantStockConditionRule`, `ProductVariantPriceConditionRule`, and `ProductVariantInventoryTrackedConditionRule`. +- Added `CraftCms\Commerce\Product\Variant\Conditions\VariantCondition`, `VariantProductConditionRule`, and `VariantConditionRule`. +- Added `CraftCms\Commerce\CatalogPricing\Conditions\CatalogPricingRuleProductCondition`, `CatalogPricingRuleVariantCondition`, and `CatalogPricingRuleVariantConditionRule`. +- Deprecated `craft\commerce\elements\conditions\products\ProductCondition`, `ProductTypeConditionRule`, `ProductVariantSearchConditionRule`, `ProductVariantSkuConditionRule`, `ProductVariantStockConditionRule`, `ProductVariantPriceConditionRule`, `ProductVariantInventoryTrackedConditionRule`, and `CatalogPricingRuleProductCondition`. The `CraftCms\Commerce\Product\Conditions` and `CraftCms\Commerce\CatalogPricing\Conditions` equivalents should be used instead. +- Deprecated `craft\commerce\elements\conditions\variants\VariantCondition`, `ProductConditionRule`, `VariantConditionRule`, `CatalogPricingRuleVariantCondition`, and `CatalogPricingRuleVariantConditionRule`. The `CraftCms\Commerce\Product\Variant\Conditions` and `CraftCms\Commerce\CatalogPricing\Conditions` equivalents should be used instead. +- Removed `craft\commerce\elements\conditions\products\ProductVariantHasUnlimitedStockConditionRule`, deprecated since 5.0.0 and already unregistered from `ProductCondition::selectableConditionRules()`. +- Added `CraftCms\Commerce\Product\Variant\Actions\SetDefaultVariant`. +- Added `CraftCms\Commerce\Product\FieldLayoutElements\ProductTitleField`. +- Added `CraftCms\Commerce\Product\Variant\FieldLayoutElements\VariantTitleField` and `VariantsField`. +- Added `CraftCms\Commerce\Product\Fields\Products` and `Variants`. +- Deprecated `craft\commerce\elements\actions\SetDefaultVariant`. `CraftCms\Commerce\Product\Variant\Actions\SetDefaultVariant` should be used instead. +- Deprecated `craft\commerce\fieldlayoutelements\ProductTitleField`, `VariantTitleField`, and `VariantsField`. `CraftCms\Commerce\Product\FieldLayoutElements\ProductTitleField` and the `CraftCms\Commerce\Product\Variant\FieldLayoutElements` equivalents should be used instead. +- Deprecated `craft\commerce\fields\Products` and `Variants`. The `CraftCms\Commerce\Product\Fields` equivalents should be used instead. +- Removed `craft\commerce\linktypes\Product`, superseded by `CraftCms\Commerce\Product\LinkTypes\ProductLinkType`. +- Added `CraftCms\Commerce\Product\Jobs\ResaveProductVariantsJob`, a native Laravel `ShouldQueue` job. +- Removed `craft\commerce\queue\jobs\ResaveProductVariants`. `CraftCms\Commerce\Product\Jobs\ResaveProductVariantsJob` should be used instead. +- Added `CraftCms\Commerce\Product\Policies\ProductPolicy`, registered via `Gate::policy()`. Product authorization now goes through it rather than `Product::canView()`, `canSave()`, `canDuplicate()`, `canDelete()`, `canDeleteForSite()`, and `canCreateDrafts()` overrides, using the same product type permissions as before. +- Added `CraftCms\Commerce\Http\ViewModels\ProductIndexViewModel`. +- The products index is now an Inertia page built on core’s element index. Product type sources link to `commerce/products/{productTypeHandle}`. +- `CraftCms\Commerce\Product\Elements\Product::getStore()` now falls back to the store of the product’s site when `storeId` isn’t set. +- Removed `craft\commerce\web\assets\productindex\ProductIndexAsset`. +- Added `CraftCms\Commerce\Http\Controllers\CreateProductController`, replacing `ProductsController::create()`. It also handles the `commerce/products/create` action, which returns the new draft as JSON. +- New products now follow their product type’s “Enabled by default” site setting, rather than always being enabled. +- The product edit screen is now an Inertia page (`commerce::products/Edit`), rendered by `CraftCms\Commerce\Http\Controllers\EditProductController` and `CraftCms\Commerce\Http\ViewModels\ProductEditViewModel`. Products save through `elements/save`. +- Added `Product::editViewModelClass()`, `Product::metaFieldsNodes()` and `Product::extraActionMenuDescriptors()`. `Product::crumbs()` now returns `CraftCms\Cms\Cp\Data\ActionItem` objects. +- Added `ProductTitleField::formControl()` and `VariantsField::formNode()`. Variants can’t be edited from the Inertia product edit screen yet. +- Added the `commerce/products/{productTypeHandle}/{id}{slug}/revisions` control panel route. +- Removed `Product::safeActionMenuItems()`. Its “Product type settings” item opened a slideout on an action that no longer exists. The item is now provided by `Product::extraActionMenuDescriptors()`. +- Fixed an error that occurred when saving a product whose product type has versioning enabled. + +#### Controllers + +- Removed `craft\commerce\controllers\ProductsController`. `CraftCms\Commerce\Http\Controllers\ProductsController` should be used instead. +- Removed `craft\commerce\controllers\VariantsController`. `CraftCms\Commerce\Http\Controllers\VariantsController` should be used instead. +- Removed `craft\commerce\controllers\ProductTypesController`. `CraftCms\Commerce\Http\Controllers\Settings\ProductTypesController` should be used instead. +- The "Product Types" settings screen is now searchable and has a "View" menu for choosing columns. + +### Catalog Pricing + +- Added `CraftCms\Commerce\CatalogPricing\CatalogPricing`. +- Added `CraftCms\Commerce\Support\Facades\CatalogPricing`. +- Added `CraftCms\Commerce\CatalogPricing\CatalogPricingRules`. +- Added `CraftCms\Commerce\Support\Facades\CatalogPricingRules`. +- Added `CraftCms\Commerce\CatalogPricing\Records\CatalogPricingQueue`. +- Added `CraftCms\Commerce\CatalogPricing\Records\CatalogPricingRule`. +- Added `CraftCms\Commerce\CatalogPricing\Data\CatalogPricing`. +- Added `CraftCms\Commerce\CatalogPricing\Data\CatalogPricingRule`. +- Added `CraftCms\Commerce\CatalogPricing\Conditions\CatalogPricingCondition`. +- Added `CraftCms\Commerce\CatalogPricing\Conditions\CatalogPricingPurchasableConditionRule`. +- Added `CraftCms\Commerce\CatalogPricing\Conditions\CatalogPricingCustomerConditionRule`. +- Added `CraftCms\Commerce\CatalogPricing\Contracts\CatalogPricingConditionRuleInterface`. +- Deprecated `craft\commerce\services\CatalogPricing`. `CraftCms\Commerce\CatalogPricing\CatalogPricing` should be used instead. +- Deprecated `craft\commerce\services\CatalogPricingRules`. `CraftCms\Commerce\CatalogPricing\CatalogPricingRules` should be used instead. +- Deprecated `craft\commerce\models\CatalogPricing`. `CraftCms\Commerce\CatalogPricing\Data\CatalogPricing` should be used instead. +- Deprecated `craft\commerce\models\CatalogPricingRule`. `CraftCms\Commerce\CatalogPricing\Data\CatalogPricingRule` should be used instead. +- Deprecated `craft\commerce\records\CatalogPricingRule`. `CraftCms\Commerce\CatalogPricing\Records\CatalogPricingRule` should be used instead. +- Deprecated `craft\commerce\elements\conditions\purchasables\CatalogPricingCondition`. `CraftCms\Commerce\CatalogPricing\Conditions\CatalogPricingCondition` should be used instead. +- Deprecated `craft\commerce\elements\conditions\purchasables\CatalogPricingPurchasableConditionRule`. `CraftCms\Commerce\CatalogPricing\Conditions\CatalogPricingPurchasableConditionRule` should be used instead. +- Deprecated `craft\commerce\elements\conditions\purchasables\CatalogPricingCustomerConditionRule`. `CraftCms\Commerce\CatalogPricing\Conditions\CatalogPricingCustomerConditionRule` should be used instead. +- Deprecated `craft\commerce\base\CatalogPricingConditionRuleInterface`. `CraftCms\Commerce\CatalogPricing\Contracts\CatalogPricingConditionRuleInterface` should be used instead. +- Removed `craft\commerce\records\CatalogPricing` as it was unused. +- Removed `craft\commerce\records\CatalogPricingRuleUser` as it was unused. +- Removed `craft\commerce\records\CatalogPricingRule`. `CraftCms\Commerce\CatalogPricing\Records\CatalogPricingRule` should be used instead. +- Removed `craft\commerce\records\CatalogPricingQueue`. `CraftCms\Commerce\CatalogPricing\Records\CatalogPricingQueue` should be used instead. +- `CraftCms\Commerce\CatalogPricing\Data\CatalogPricingRule` now uses `CraftCms\Commerce\Customer\Conditions\CatalogPricingRuleCustomerCondition`, `CraftCms\Commerce\CatalogPricing\Conditions\CatalogPricingRuleProductCondition`, `CatalogPricingRuleVariantCondition`, and `CraftCms\Commerce\Purchasable\Conditions\CatalogPricingRulePurchasableCondition`. +- Added `CraftCms\Commerce\CatalogPricing\Jobs\CatalogPricingJob`, a native Laravel `ShouldQueue` job. +- Removed `craft\commerce\queue\jobs\CatalogPricing`. `CraftCms\Commerce\CatalogPricing\Jobs\CatalogPricingJob` should be used instead. + +#### Controllers + +- Removed `craft\commerce\controllers\CatalogPricingRulesController`. `CraftCms\Commerce\Http\Controllers\Settings\CatalogPricingRulesController` should be used instead. +- Removed `craft\commerce\controllers\CatalogPricingController`. `CraftCms\Commerce\Http\Controllers\Settings\CatalogPricingController` should be used instead. + +### Console + +- Added `CraftCms\Commerce\Console\Commands\ExampleTemplates\ExampleTemplatesCommand` (`commerce:example-templates`). +- Added `CraftCms\Commerce\Console\Commands\Gateways\GatewaysListCommand` (`commerce:gateways:list`). +- Added `CraftCms\Commerce\Console\Commands\Gateways\GatewaysWebhookUrlCommand` (`commerce:gateways:webhook-url`). +- Added `CraftCms\Commerce\Console\Commands\PricingCatalog\PricingCatalogGenerateCommand` (`commerce:pricing-catalog:generate`). +- Added `CraftCms\Commerce\Console\Commands\ResetData\ResetDataCommand` (`commerce:reset-data`). +- Added `CraftCms\Commerce\Console\Commands\TransferCustomerData\TransferCustomerDataCommand` (`commerce:transfer-customer-data`). +- Removed `craft\commerce\console\controllers\ExampleTemplatesController`, `craft\commerce\console\controllers\GatewaysController`, `craft\commerce\console\controllers\PricingCatalogController`, `craft\commerce\console\controllers\ResetDataController`, and `craft\commerce\console\controllers\TransferCustomerDataController`. Their legacy `commerce/*` CLI routes still work as command aliases (e.g. `craft commerce/gateways/list`). +- Removed `craft\commerce\console\Controller`. + +### Controllers + +- Removed `craft\commerce\controllers\BaseController`, `craft\commerce\controllers\BaseCpController`, `craft\commerce\controllers\BaseAdminController`, and `craft\commerce\controllers\BaseFrontEndController`. +- Removed `craft\commerce\controllers\BaseStoreManagementController`. +- Removed `craft\commerce\controllers\BaseTaxSettingsController`. +- Removed `craft\commerce\controllers\BaseShippingSettingsController`. +- Removed `craft\commerce\controllers\SettingsController`. `CraftCms\Commerce\Http\Controllers\Settings\SettingsController` should be used instead. +- Removed `craft\commerce\controllers\PromotionsController`. The `commerce/promotions` URL now redirects to `commerce/promotions/sales` via a plain route closure. +- The control panel delete, archive and deactivate actions for gateways, stores, order statuses, line item statuses, product types, payment currencies, shipping zones, shipping methods, shipping rules, shipping categories, tax zones, tax categories, tax rates, discounts, catalog pricing rules, emails, PDFs and inventory locations now accept `DELETE` requests as well as `POST` requests. + +### Customers + +- Added `CraftCms\Commerce\Customer\Customers`. +- Added `CraftCms\Commerce\Support\Facades\Customers`. +- Added `CraftCms\Commerce\Customer\Records\Customer`. +- Added `CraftCms\Commerce\Customer\Customers::afterSaveUserHandler()` and `afterSaveAddressHandler()`, listening for `CraftCms\Cms\Element\Events\ElementSaved` to persist primary billing/shipping addresses, primary payment sources, and order email syncing. +- Deprecated `craft\commerce\services\Customers`. `CraftCms\Commerce\Customer\Customers` should be used instead. +- Removed `craft\commerce\behaviors\CustomerBehavior`. `User::getPrimaryBillingAddressId()`, `getPrimaryShippingAddressId()`, `getPrimaryPaymentSourceId()`, `getActiveCarts()`, `getInactiveCarts()`, and `getOrders()` are provided via a `Illuminate\Support\Traits\Macroable` macro instead. +- Removed `craft\commerce\behaviors\CustomerAddressBehavior`. `Address::getIsPrimaryBilling()` and `getIsPrimaryShipping()` are provided via a `Illuminate\Support\Traits\Macroable` macro instead. +- Added `CraftCms\Commerce\Customer\Fields\IsPrimaryBillingField`, `IsPrimaryShippingField`, `PrimaryBillingAddressIdField`, and `PrimaryShippingAddressIdField`, opt-in read-only field types that expose the primary billing/shipping macros via `toArray()`/GraphQL. +- Removed `craft\commerce\records\Customer`. `CraftCms\Commerce\Customer\Records\Customer` should be used instead. +- Added `CraftCms\Commerce\Customer\Conditions\DiscountCustomerCondition`, `HasOrdersConditionRule`, `SignedInConditionRule`, `DiscountGroupConditionRule`, `ShippingMethodCustomerCondition`, `ShippingRuleCustomerCondition`, `CatalogPricingRuleCustomerCondition`, and `CatalogPricingRuleCustomerConditionRule`. +- Deprecated `craft\commerce\elements\conditions\customers\DiscountCustomerCondition`, `HasOrdersConditionRule`, `SignedInConditionRule`, `ShippingMethodCustomerCondition`, `ShippingRuleCustomerCondition`, `CatalogPricingRuleCustomerCondition`, and `CatalogPricingRuleCustomerConditionRule`. The `CraftCms\Commerce\Customer\Conditions` equivalents should be used instead. +- Deprecated `craft\commerce\elements\conditions\users\DiscountGroupConditionRule`. `CraftCms\Commerce\Customer\Conditions\DiscountGroupConditionRule` should be used instead. +- Added `CraftCms\Commerce\Customer\FieldLayoutElements\UserAddressSettings`. +- Deprecated `craft\commerce\fieldlayoutelements\UserAddressSettings`. `CraftCms\Commerce\Customer\FieldLayoutElements\UserAddressSettings` should be used instead. + +### Dashboard & Widgets + +- Added `CraftCms\Commerce\Stats\Stat`. +- Added `CraftCms\Commerce\Stats\Contracts\StatInterface`. +- Added `CraftCms\Commerce\Dashboard\Widgets\Concerns\StatWidgetTrait` trait. +- Added `CraftCms\Commerce\Stats\AverageOrderTotal`. +- Added `CraftCms\Commerce\Stats\NewCustomers`. +- Added `CraftCms\Commerce\Stats\RepeatCustomers`. +- Added `CraftCms\Commerce\Stats\TopCustomers`. +- Added `CraftCms\Commerce\Stats\TopProductTypes`. +- Added `CraftCms\Commerce\Stats\TopPurchasables`. +- Added `CraftCms\Commerce\Stats\TopProducts`. +- Added `CraftCms\Commerce\Stats\TotalOrders`. +- Added `CraftCms\Commerce\Stats\TotalOrdersByCountry`. +- Added `CraftCms\Commerce\Stats\TotalRevenue`. +- Added `CraftCms\Commerce\Dashboard\Widgets\AverageOrderTotal`. +- Added `CraftCms\Commerce\Dashboard\Widgets\NewCustomers`. +- Added `CraftCms\Commerce\Dashboard\Widgets\RepeatCustomers`. +- Added `CraftCms\Commerce\Dashboard\Widgets\TopCustomers`. +- Added `CraftCms\Commerce\Dashboard\Widgets\TopProductTypes`. +- Added `CraftCms\Commerce\Dashboard\Widgets\TopPurchasables`. +- Added `CraftCms\Commerce\Dashboard\Widgets\TopProducts`. +- Added `CraftCms\Commerce\Dashboard\Widgets\TotalOrders`. +- Added `CraftCms\Commerce\Dashboard\Widgets\TotalOrdersByCountry`. +- Added `CraftCms\Commerce\Dashboard\Widgets\TotalRevenue`. +- Added `CraftCms\Commerce\Dashboard\Widgets\Orders`. +- Deprecated `craft\commerce\stats\AverageOrderTotal`. `CraftCms\Commerce\Stats\AverageOrderTotal` should be used instead. +- Deprecated `craft\commerce\stats\NewCustomers`. `CraftCms\Commerce\Stats\NewCustomers` should be used instead. +- Deprecated `craft\commerce\stats\RepeatCustomers`. `CraftCms\Commerce\Stats\RepeatCustomers` should be used instead. +- Deprecated `craft\commerce\stats\TopCustomers`. `CraftCms\Commerce\Stats\TopCustomers` should be used instead. +- Deprecated `craft\commerce\stats\TopProductTypes`. `CraftCms\Commerce\Stats\TopProductTypes` should be used instead. +- Deprecated `craft\commerce\stats\TopPurchasables`. `CraftCms\Commerce\Stats\TopPurchasables` should be used instead. +- Deprecated `craft\commerce\stats\TopProducts`. `CraftCms\Commerce\Stats\TopProducts` should be used instead. +- Deprecated `craft\commerce\stats\TotalOrders`. `CraftCms\Commerce\Stats\TotalOrders` should be used instead. +- Deprecated `craft\commerce\stats\TotalOrdersByCountry`. `CraftCms\Commerce\Stats\TotalOrdersByCountry` should be used instead. +- Deprecated `craft\commerce\stats\TotalRevenue`. `CraftCms\Commerce\Stats\TotalRevenue` should be used instead. +- Deprecated `craft\commerce\base\StatInterface`. `CraftCms\Commerce\Stats\Contracts\StatInterface` should be used instead. +- `CraftCms\Commerce\Stats\Stat` and its subclasses now build their queries entirely through the Laravel query builder, using `tpetry/laravel-query-expressions` for cross-database SQL differences instead of manual driver checks. +- `CraftCms\Commerce\Stats\Stat` now implements `CraftCms\Commerce\Store\Contracts\HasStoreInterface`, matching its legacy counterpart (`StoreTrait` already satisfied the interface's contract; the `implements` clause itself had been dropped). +- Added `CraftCms\Commerce\Support\Expressions\LocalTimestamp`, `DateOnly`, `MonthKey`, and `Round` query expressions. +- Deprecated `craft\commerce\widgets\AverageOrderTotal`. `CraftCms\Commerce\Dashboard\Widgets\AverageOrderTotal` should be used instead. +- Deprecated `craft\commerce\widgets\NewCustomers`. `CraftCms\Commerce\Dashboard\Widgets\NewCustomers` should be used instead. +- Deprecated `craft\commerce\widgets\RepeatCustomers`. `CraftCms\Commerce\Dashboard\Widgets\RepeatCustomers` should be used instead. +- Deprecated `craft\commerce\widgets\TopCustomers`. `CraftCms\Commerce\Dashboard\Widgets\TopCustomers` should be used instead. +- Deprecated `craft\commerce\widgets\TopProductTypes`. `CraftCms\Commerce\Dashboard\Widgets\TopProductTypes` should be used instead. +- Deprecated `craft\commerce\widgets\TopPurchasables`. `CraftCms\Commerce\Dashboard\Widgets\TopPurchasables` should be used instead. +- Deprecated `craft\commerce\widgets\TopProducts`. `CraftCms\Commerce\Dashboard\Widgets\TopProducts` should be used instead. +- Deprecated `craft\commerce\widgets\TotalOrders`. `CraftCms\Commerce\Dashboard\Widgets\TotalOrders` should be used instead. +- Deprecated `craft\commerce\widgets\TotalOrdersByCountry`. `CraftCms\Commerce\Dashboard\Widgets\TotalOrdersByCountry` should be used instead. +- Deprecated `craft\commerce\widgets\TotalRevenue`. `CraftCms\Commerce\Dashboard\Widgets\TotalRevenue` should be used instead. +- Deprecated `craft\commerce\widgets\Orders`. `CraftCms\Commerce\Dashboard\Widgets\Orders` should be used instead. +- Deprecated `craft\commerce\base\Stat`. `CraftCms\Commerce\Stats\Stat` should be used instead. +- Deprecated `craft\commerce\base\StatWidgetTrait`. `CraftCms\Commerce\Dashboard\Widgets\Concerns\StatWidgetTrait` should be used instead. +- Removed `craft\commerce\base\StatTrait`. Its properties are now declared directly on `CraftCms\Commerce\Stats\Stat`. + +### Email + +- Added `CraftCms\Commerce\Email\Emails`. +- Added `CraftCms\Commerce\Support\Facades\Emails`. +- Added `CraftCms\Commerce\Email\Records\Email`. +- Added `CraftCms\Commerce\Email\Models\Email`. +- Added `CraftCms\Commerce\Email\Exceptions\EmailException`. +- Added `CraftCms\Commerce\Email\Events\EmailEvent`. +- Added `CraftCms\Commerce\Email\Events\MailEvent`. +- Added `CraftCms\Commerce\Email\Jobs\SendEmailJob`, a native Laravel `ShouldQueue` job. +- Removed `craft\commerce\queue\jobs\SendEmail`. `CraftCms\Commerce\Email\Jobs\SendEmailJob` should be used instead. +- Deprecated `craft\commerce\services\Emails`. `CraftCms\Commerce\Email\Emails` should be used instead. +- Deprecated `craft\commerce\models\Email`. `CraftCms\Commerce\Email\Models\Email` should be used instead. +- Deprecated `craft\commerce\errors\EmailException`. `CraftCms\Commerce\Email\Exceptions\EmailException` should be used instead. +- Deprecated `craft\commerce\events\EmailEvent`. `CraftCms\Commerce\Email\Events\EmailEvent` should be used instead. +- Deprecated `craft\commerce\events\MailEvent`. `CraftCms\Commerce\Email\Events\MailEvent` should be used instead. +- Removed `craft\commerce\records\Email`. `CraftCms\Commerce\Email\Records\Email` should be used instead. + +#### Controllers + +- Removed `craft\commerce\controllers\EmailsController`. `CraftCms\Commerce\Http\Controllers\Settings\EmailsController` should be used instead. +- The "Emails" settings screen now lists one store at a time, at `commerce/settings/emails/`, with a subnav for switching stores. +- The "Emails" settings screen is now searchable and has a "View" menu for choosing columns. +- Removed `craft\commerce\controllers\EmailPreviewController`. `CraftCms\Commerce\Http\Controllers\EmailPreviewController` should be used instead. + +### Pdf + +- Added `CraftCms\Commerce\Pdf\Pdfs`. +- Added `CraftCms\Commerce\Support\Facades\Pdfs`. +- Added `CraftCms\Commerce\Pdf\Records\Pdf`. +- Added `CraftCms\Commerce\Pdf\Models\Pdf`. +- Added `CraftCms\Commerce\Http\RateLimiters\PdfChallengeRateLimiter`, replacing the per-action `yii\filters\RateLimiter` behavior used to throttle PDF download challenge requests. +- Added `CraftCms\Commerce\Pdf\Events\PdfEvent`. +- Added `CraftCms\Commerce\Pdf\Events\PdfRenderEvent`. +- Added `CraftCms\Commerce\Pdf\Events\PdfRenderOptionsEvent`. +- Deprecated `craft\commerce\services\Pdfs`. `CraftCms\Commerce\Pdf\Pdfs` should be used instead. +- Deprecated `craft\commerce\models\Pdf`. `CraftCms\Commerce\Pdf\Models\Pdf` should be used instead. +- Deprecated `craft\commerce\events\PdfEvent`. `CraftCms\Commerce\Pdf\Events\PdfEvent` should be used instead. +- Deprecated `craft\commerce\events\PdfRenderEvent`. `CraftCms\Commerce\Pdf\Events\PdfRenderEvent` should be used instead. +- Deprecated `craft\commerce\events\PdfRenderOptionsEvent`. `CraftCms\Commerce\Pdf\Events\PdfRenderOptionsEvent` should be used instead. +- Removed `craft\commerce\records\Pdf`. `CraftCms\Commerce\Pdf\Records\Pdf` should be used instead. +- Updated dompdf/dompdf to ^3.1.6 (from ^2.0.2). + +#### Controllers + +- Removed `craft\commerce\controllers\PdfsController`. `CraftCms\Commerce\Http\Controllers\Settings\PdfsController` should be used instead. +- The "PDFs" settings screen now lists one store at a time, at `commerce/settings/pdfs/`, with a subnav for switching stores. +- The "PDFs" settings screen is now searchable and has a "View" menu for choosing columns. + +### Formulas + +- Added `CraftCms\Commerce\Formula\Formulas`. +- Added `CraftCms\Commerce\Support\Facades\Formulas`. +- Deprecated `craft\commerce\services\Formulas`. `CraftCms\Commerce\Formula\Formulas` should be used instead. + +#### Controllers + +- Removed `craft\commerce\controllers\FormulasController`. `CraftCms\Commerce\Http\Controllers\FormulasController` should be used instead. + +### GraphQL + +- Added `CraftCms\Commerce\Gql\Arguments\Elements\Product`. +- Added `CraftCms\Commerce\Gql\Arguments\Elements\Variant`. +- Added `CraftCms\Commerce\Gql\Interfaces\Elements\Product`. +- Added `CraftCms\Commerce\Gql\Interfaces\Elements\Variant`. +- Added `CraftCms\Commerce\Gql\Queries\Product`. +- Added `CraftCms\Commerce\Gql\Queries\Variant`. +- Added `CraftCms\Commerce\Gql\Resolvers\Elements\Product`. +- Added `CraftCms\Commerce\Gql\Resolvers\Elements\Variant`. +- Added `CraftCms\Commerce\Gql\Types\Elements\Product`. +- Added `CraftCms\Commerce\Gql\Types\Elements\Variant`. +- Added `CraftCms\Commerce\Gql\Types\Generators\ProductType`. +- Added `CraftCms\Commerce\Gql\Types\Generators\VariantType`. +- Added `CraftCms\Commerce\Gql\Types\Input\IntFalse`. +- Added `CraftCms\Commerce\Gql\Types\Input\Product`. +- Added `CraftCms\Commerce\Gql\Types\Input\Variant`. +- Added `CraftCms\Commerce\Gql\Types\SaleType`. +- Deprecated `craft\commerce\gql\arguments\elements\Product`. `CraftCms\Commerce\Gql\Arguments\Elements\Product` should be used instead. +- Deprecated `craft\commerce\gql\arguments\elements\Variant`. `CraftCms\Commerce\Gql\Arguments\Elements\Variant` should be used instead. +- Deprecated `craft\commerce\gql\interfaces\elements\Product`. `CraftCms\Commerce\Gql\Interfaces\Elements\Product` should be used instead. +- Deprecated `craft\commerce\gql\interfaces\elements\Variant`. `CraftCms\Commerce\Gql\Interfaces\Elements\Variant` should be used instead. +- Deprecated `craft\commerce\gql\queries\Product`. `CraftCms\Commerce\Gql\Queries\Product` should be used instead. +- Deprecated `craft\commerce\gql\queries\Variant`. `CraftCms\Commerce\Gql\Queries\Variant` should be used instead. +- Deprecated `craft\commerce\gql\resolvers\elements\Product`. `CraftCms\Commerce\Gql\Resolvers\Elements\Product` should be used instead. +- Deprecated `craft\commerce\gql\resolvers\elements\Variant`. `CraftCms\Commerce\Gql\Resolvers\Elements\Variant` should be used instead. +- Deprecated `craft\commerce\gql\types\elements\Product`. `CraftCms\Commerce\Gql\Types\Elements\Product` should be used instead. +- Deprecated `craft\commerce\gql\types\elements\Variant`. `CraftCms\Commerce\Gql\Types\Elements\Variant` should be used instead. +- Deprecated `craft\commerce\gql\types\generators\ProductType`. `CraftCms\Commerce\Gql\Types\Generators\ProductType` should be used instead. +- Deprecated `craft\commerce\gql\types\generators\VariantType`. `CraftCms\Commerce\Gql\Types\Generators\VariantType` should be used instead. +- Deprecated `craft\commerce\gql\types\input\IntFalse`. `CraftCms\Commerce\Gql\Types\Input\IntFalse` should be used instead. +- Deprecated `craft\commerce\gql\types\input\Product`. `CraftCms\Commerce\Gql\Types\Input\Product` should be used instead. +- Deprecated `craft\commerce\gql\types\input\Variant`. `CraftCms\Commerce\Gql\Types\Input\Variant` should be used instead. +- Deprecated `craft\commerce\gql\types\SaleType`. `CraftCms\Commerce\Gql\Types\SaleType` should be used instead. +- Deprecated `craft\commerce\helpers\Gql`. `CraftCms\Commerce\Helpers\Gql` should be used instead. + +### Helpers + +- Added `CraftCms\Commerce\Helpers\Cp`. +- Added `CraftCms\Commerce\Helpers\Currency`. +- Added `CraftCms\Commerce\Helpers\Locale`. +- Added `CraftCms\Commerce\Helpers\Localization`. +- Added `CraftCms\Commerce\Helpers\Order`. +- Added `CraftCms\Commerce\Helpers\ProductQuery`. +- Added `CraftCms\Commerce\Helpers\ProjectConfigData`. +- Added `CraftCms\Commerce\Helpers\Purchasable`. +- Deprecated `craft\commerce\helpers\Cp`. `CraftCms\Commerce\Helpers\Cp` should be used instead. +- Deprecated `craft\commerce\helpers\Currency`. `CraftCms\Commerce\Helpers\Currency` should be used instead. +- Deprecated `craft\commerce\helpers\Locale`. `CraftCms\Commerce\Helpers\Locale` should be used instead. +- Deprecated `craft\commerce\helpers\Localization`. `CraftCms\Commerce\Helpers\Localization` should be used instead. +- Deprecated `craft\commerce\helpers\Order`. `CraftCms\Commerce\Helpers\Order` should be used instead. +- Deprecated `craft\commerce\helpers\ProductQuery`. `CraftCms\Commerce\Helpers\ProductQuery` should be used instead. +- Deprecated `craft\commerce\helpers\ProjectConfigData`. `CraftCms\Commerce\Helpers\ProjectConfigData` should be used instead. +- Deprecated `craft\commerce\helpers\Purchasable`. `CraftCms\Commerce\Helpers\Purchasable` should be used instead. + +### Inventory + +- Added `CraftCms\Commerce\Inventory\Inventory`. +- Added `CraftCms\Commerce\Support\Facades\Inventory`. +- Added `CraftCms\Commerce\Inventory\InventoryLocations`. +- Added `CraftCms\Commerce\Support\Facades\InventoryLocations`. +- Added `CraftCms\Commerce\Inventory\Records\InventoryItem`. +- Added `CraftCms\Commerce\Inventory\Records\InventoryLocation`. +- Added `CraftCms\Commerce\Inventory\Collections\InventoryMovementCollection`. +- Added `CraftCms\Commerce\Inventory\Collections\UpdateInventoryLevelCollection`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryLocation`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryMovement`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryManualMovement`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryCommittedMovement`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryFulfillMovement`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryRestockMovement`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryTransferMovement`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryLocationDeactivatedMovement`. +- Added `CraftCms\Commerce\Inventory\Models\DeactivateInventoryLocation`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryItem`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryFulfillmentLevel`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryLevel`. +- Added `CraftCms\Commerce\Inventory\Models\InventoryTransaction`. +- Added `CraftCms\Commerce\Inventory\Models\UpdateInventoryLevel`. +- Added `CraftCms\Commerce\Inventory\Models\UpdateInventoryLevelInTransfer`. +- Added `CraftCms\Commerce\Inventory\Concerns\InventoryItemTrait`. +- Added `CraftCms\Commerce\Inventory\Concerns\InventoryLocationTrait`. +- Added `CraftCms\Commerce\Inventory\Contracts\InventoryMovementInterface`. +- Added `CraftCms\Commerce\Inventory\Enums\InventoryTransactionType` enum. +- Added `CraftCms\Commerce\Inventory\Enums\InventoryUpdateQuantityType` enum. +- Added `CraftCms\Commerce\Inventory\Events\InventoryMovementEvent`. +- Added `CraftCms\Commerce\Inventory\Events\UpdateInventoryLevelEvent`. +- Deprecated `craft\commerce\services\Inventory`. `CraftCms\Commerce\Inventory\Inventory` should be used instead. +- Deprecated `craft\commerce\services\InventoryLocations`. `CraftCms\Commerce\Inventory\InventoryLocations` should be used instead. +- Deprecated `craft\commerce\collections\InventoryMovementCollection`. `CraftCms\Commerce\Inventory\Collections\InventoryMovementCollection` should be used instead. +- Deprecated `craft\commerce\collections\UpdateInventoryLevelCollection`. `CraftCms\Commerce\Inventory\Collections\UpdateInventoryLevelCollection` should be used instead. +- Deprecated `craft\commerce\models\InventoryLocation`. `CraftCms\Commerce\Inventory\Models\InventoryLocation` should be used instead. +- Deprecated `craft\commerce\base\InventoryMovement`. `CraftCms\Commerce\Inventory\Models\InventoryMovement` should be used instead. +- Deprecated `craft\commerce\models\inventory\InventoryManualMovement`. `CraftCms\Commerce\Inventory\Models\InventoryManualMovement` should be used instead. +- Deprecated `craft\commerce\models\inventory\InventoryCommittedMovement`. `CraftCms\Commerce\Inventory\Models\InventoryCommittedMovement` should be used instead. +- Deprecated `craft\commerce\models\inventory\InventoryFulfillMovement`. `CraftCms\Commerce\Inventory\Models\InventoryFulfillMovement` should be used instead. +- Deprecated `craft\commerce\models\inventory\InventoryRestockMovement`. `CraftCms\Commerce\Inventory\Models\InventoryRestockMovement` should be used instead. +- Deprecated `craft\commerce\models\inventory\InventoryTransferMovement`. `CraftCms\Commerce\Inventory\Models\InventoryTransferMovement` should be used instead. +- Deprecated `craft\commerce\models\inventory\InventoryLocationDeactivatedMovement`. `CraftCms\Commerce\Inventory\Models\InventoryLocationDeactivatedMovement` should be used instead. +- Deprecated `craft\commerce\models\inventory\DeactivateInventoryLocation`. `CraftCms\Commerce\Inventory\Models\DeactivateInventoryLocation` should be used instead. +- Deprecated `craft\commerce\models\InventoryItem`. `CraftCms\Commerce\Inventory\Models\InventoryItem` should be used instead. +- Deprecated `craft\commerce\models\InventoryFulfillmentLevel`. `CraftCms\Commerce\Inventory\Models\InventoryFulfillmentLevel` should be used instead. +- Deprecated `craft\commerce\models\InventoryLevel`. `CraftCms\Commerce\Inventory\Models\InventoryLevel` should be used instead. +- Deprecated `craft\commerce\models\InventoryTransaction`. `CraftCms\Commerce\Inventory\Models\InventoryTransaction` should be used instead. +- Deprecated `craft\commerce\models\inventory\UpdateInventoryLevel`. `CraftCms\Commerce\Inventory\Models\UpdateInventoryLevel` should be used instead. +- Deprecated `craft\commerce\models\inventory\UpdateInventoryLevelInTransfer`. `CraftCms\Commerce\Inventory\Models\UpdateInventoryLevelInTransfer` should be used instead. +- Deprecated `craft\commerce\base\InventoryItemTrait`. `CraftCms\Commerce\Inventory\Concerns\InventoryItemTrait` should be used instead. +- Deprecated `craft\commerce\base\InventoryLocationTrait`. `CraftCms\Commerce\Inventory\Concerns\InventoryLocationTrait` should be used instead. +- Deprecated `craft\commerce\base\InventoryMovementInterface`. `CraftCms\Commerce\Inventory\Contracts\InventoryMovementInterface` should be used instead. +- Deprecated `craft\commerce\enums\InventoryTransactionType`. `CraftCms\Commerce\Inventory\Enums\InventoryTransactionType` should be used instead. +- Deprecated `craft\commerce\enums\InventoryUpdateQuantityType`. `CraftCms\Commerce\Inventory\Enums\InventoryUpdateQuantityType` should be used instead. +- Deprecated `craft\commerce\events\InventoryMovementEvent`. `CraftCms\Commerce\Inventory\Events\InventoryMovementEvent` should be used instead. +- Deprecated `craft\commerce\events\UpdateInventoryLevelEvent`. `CraftCms\Commerce\Inventory\Events\UpdateInventoryLevelEvent` should be used instead. +- Removed `craft\commerce\records\InventoryItem`. `CraftCms\Commerce\Inventory\Records\InventoryItem` should be used instead. +- Removed `craft\commerce\records\InventoryLocation`. `CraftCms\Commerce\Inventory\Records\InventoryLocation` should be used instead. +- Removed `craft\commerce\web\assets\inventory\InventoryAsset`. +- Renamed the "Inventory" Control Panel nav item to "Manage Inventory". +- The "Manage Inventory", "Inventory Locations", and "Inventory Transfers" Control Panel nav items are now grouped under an "Inventory" heading. + +#### Controllers + +- Removed `craft\commerce\controllers\InventoryController`. `CraftCms\Commerce\Http\Controllers\InventoryController` should be used instead. +- Removed `craft\commerce\controllers\InventoryLocationsController`. `CraftCms\Commerce\Http\Controllers\InventoryLocationsController` should be used instead. +- The `commerce/inventory/inventory-levels-table-data` action now requires a `POST` request. +- Added the `commerce/inventory/prepare-update-levels-modal` action, returning the “Set Quantity” and “Adjust Quantity” modals' form. +- Added the `commerce/inventory/prepare-movement-modal` action, returning the “Move Inventory” modal's form. +- Removed the `commerce/inventory/edit-update-levels-modal`, `commerce/inventory/edit-movement-modal` and `commerce/inventory/unfulfilled-orders` actions. +- Removed the `cp.commerce.inventory.index` template hook. + +### Orders + +- Added `CraftCms\Commerce\Order\Elements\Order`. +- Added `CraftCms\Commerce\Order\Queries\OrderQuery`. +- Added `CraftCms\Commerce\Order\Models\Order`. +- Added `CraftCms\Commerce\Order\Models\OrderStatus`. +- Added `CraftCms\Commerce\Order\Models\OrderAdjustment`. +- Added `CraftCms\Commerce\Order\Models\OrderNotice`. +- Added `CraftCms\Commerce\Order\Models\OrderHistory`. +- Added `CraftCms\Commerce\Order\Models\LineItemStatus`. +- Added `CraftCms\Commerce\Order\Records\OrderHistory`. +- Added `CraftCms\Commerce\Order\Records\OrderAdjustment`. +- Added `CraftCms\Commerce\Order\Records\LineItemStatus`. +- Added `CraftCms\Commerce\Order\Records\OrderStatus`. +- Added `CraftCms\Commerce\Order\Records\OrderNotice`. +- Added `CraftCms\Commerce\Order\Exceptions\OrderAdjustmentNotFoundException`. +- Added `CraftCms\Commerce\Order\Exceptions\CurrencyException`. +- Added `CraftCms\Commerce\Order\Exceptions\LineItemNotFoundException`. +- Added `CraftCms\Commerce\Order\Exceptions\OrderStatusException`. +- Added `CraftCms\Commerce\Order\Exceptions\LineItemException`. +- Added `CraftCms\Commerce\Order\LineItem\Data\LineItem`. +- Added `CraftCms\Commerce\Order\LineItem\Models\LineItem`. +- Added `CraftCms\Commerce\Order\LineItem\LineItems`. +- Added `CraftCms\Commerce\Support\Facades\LineItems`. +- Added `CraftCms\Commerce\Order\LineItem\Enums\LineItemType` enum. +- Added `CraftCms\Commerce\Order\Orders`. +- Added `CraftCms\Commerce\Support\Facades\Orders`. +- Added `CraftCms\Commerce\Order\Carts`. +- Added `CraftCms\Commerce\Support\Facades\Carts`. +- Added `CraftCms\Commerce\Order\OrderNotices`. +- Added `CraftCms\Commerce\Support\Facades\OrderNotices`. +- Added `CraftCms\Commerce\Order\OrderHistories`. +- Added `CraftCms\Commerce\Support\Facades\OrderHistories`. +- Added `CraftCms\Commerce\Order\OrderAdjustments`. +- Added `CraftCms\Commerce\Support\Facades\OrderAdjustments`. +- Added `CraftCms\Commerce\Order\OrderStatuses`. +- Added `CraftCms\Commerce\Support\Facades\OrderStatuses`. +- Added `CraftCms\Commerce\Order\LineItemStatuses`. +- Added `CraftCms\Commerce\Support\Facades\LineItemStatuses`. +- Added `CraftCms\Commerce\Order\Adjuster\Tax`. +- Added `CraftCms\Commerce\Order\Adjuster\Shipping`. +- Added `CraftCms\Commerce\Order\Adjuster\Discount`. +- Added `CraftCms\Commerce\Order\Adjuster\Contracts\AdjusterInterface`. +- Added `CraftCms\Commerce\Order\Adjuster\AdjusterTypes`, a `CraftCms\Cms\Component\TypeRegistry` for registering order adjuster types. +- Added `CraftCms\Commerce\Support\Facades\AdjusterTypes`. +- Added `CraftCms\Commerce\Order\Adjuster\DiscountAdjusterTypes`, a `CraftCms\Cms\Component\TypeRegistry` for registering adjuster types that should be treated as discounts. +- Added `CraftCms\Commerce\Support\Facades\DiscountAdjusterTypes`. +- Deprecated `craft\commerce\services\OrderAdjustments::EVENT_REGISTER_ORDER_ADJUSTERS`. `CraftCms\Commerce\Order\Adjuster\AdjusterTypes::register()` should be used instead. +- Deprecated `craft\commerce\services\OrderAdjustments::EVENT_REGISTER_DISCOUNT_ADJUSTERS`. `CraftCms\Commerce\Order\Adjuster\DiscountAdjusterTypes::register()` should be used instead. +- Added `CraftCms\Commerce\Order\Exporters\Expanded`. +- Added `CraftCms\Commerce\Order\Exporters\LineItemExport`. +- Added `CraftCms\Commerce\Order\Exporters\OrderExport`. +- Added `CraftCms\Commerce\Http\Controllers\Concerns\HasCartArray`, a trait shared between `CartController` and `PaymentsController` for building a cart's array representation. +- Added `CraftCms\Commerce\Http\RateLimiters\CartRateLimiter` and `CraftCms\Commerce\Http\RateLimiters\CartChallengeRateLimiter`. +- Added `CraftCms\Commerce\Order\Events\AddLineItemEvent`. +- Added `CraftCms\Commerce\Order\Events\CartEvent`. +- Added `CraftCms\Commerce\Order\Events\CartPurgeEvent`. +- Added `CraftCms\Commerce\Order\Events\DefaultLineItemStatusEvent`. +- Added `CraftCms\Commerce\Order\Events\DefaultOrderStatusEvent`. +- Added `CraftCms\Commerce\Order\Events\LineItemEvent`. +- Added `CraftCms\Commerce\Order\Events\ModifyCartInfoEvent`. +- Added `CraftCms\Commerce\Order\Events\OrderLineItemsRefreshEvent`. +- Added `CraftCms\Commerce\Order\Events\OrderNoticeEvent`. +- Added `CraftCms\Commerce\Order\Events\OrderStatusEmailsEvent`. +- Added `CraftCms\Commerce\Order\Events\OrderStatusEvent`. +- Added `CraftCms\Commerce\Order\Events\PurgeAddressesEvent`. +- Deprecated `craft\commerce\elements\Order`. `CraftCms\Commerce\Order\Elements\Order` should be used instead. +- Deprecated `craft\commerce\elements\db\OrderQuery`. `CraftCms\Commerce\Order\Queries\OrderQuery` should be used instead. +- Deprecated `craft\commerce\records\Order`. `CraftCms\Commerce\Order\Models\Order` should be used instead. +- Deprecated `craft\commerce\models\OrderStatus`. `CraftCms\Commerce\Order\Models\OrderStatus` should be used instead. +- Deprecated `craft\commerce\models\OrderAdjustment`. `CraftCms\Commerce\Order\Models\OrderAdjustment` should be used instead. +- Deprecated `craft\commerce\models\OrderNotice`. `CraftCms\Commerce\Order\Models\OrderNotice` should be used instead. +- Deprecated `craft\commerce\models\OrderHistory`. `CraftCms\Commerce\Order\Models\OrderHistory` should be used instead. +- Deprecated `craft\commerce\models\LineItemStatus`. `CraftCms\Commerce\Order\Models\LineItemStatus` should be used instead. +- Deprecated `craft\commerce\models\LineItem`. `CraftCms\Commerce\Order\LineItem\Data\LineItem` should be used instead. +- Deprecated `craft\commerce\records\LineItem`. `CraftCms\Commerce\Order\LineItem\Models\LineItem` should be used instead. +- Deprecated `craft\commerce\services\LineItems`. `CraftCms\Commerce\Order\LineItem\LineItems` should be used instead. +- Deprecated `craft\commerce\enums\LineItemType`. `CraftCms\Commerce\Order\LineItem\Enums\LineItemType` should be used instead. +- Deprecated `craft\commerce\services\Orders`. `CraftCms\Commerce\Order\Orders` should be used instead. +- Deprecated `craft\commerce\services\Carts`. `CraftCms\Commerce\Order\Carts` should be used instead. +- Deprecated `craft\commerce\services\OrderNotices`. `CraftCms\Commerce\Order\OrderNotices` should be used instead. +- Deprecated `craft\commerce\services\OrderHistories`. `CraftCms\Commerce\Order\OrderHistories` should be used instead. +- Deprecated `craft\commerce\services\OrderAdjustments`. `CraftCms\Commerce\Order\OrderAdjustments` should be used instead. +- Deprecated `craft\commerce\services\OrderStatuses`. `CraftCms\Commerce\Order\OrderStatuses` should be used instead. +- Deprecated `craft\commerce\services\LineItemStatuses`. `CraftCms\Commerce\Order\LineItemStatuses` should be used instead. +- Deprecated `craft\commerce\adjusters\Tax`. `CraftCms\Commerce\Order\Adjuster\Tax` should be used instead. +- Deprecated `craft\commerce\adjusters\Shipping`. `CraftCms\Commerce\Order\Adjuster\Shipping` should be used instead. +- Deprecated `craft\commerce\adjusters\Discount`. `CraftCms\Commerce\Order\Adjuster\Discount` should be used instead. +- Deprecated `craft\commerce\base\AdjusterInterface`. `CraftCms\Commerce\Order\Adjuster\Contracts\AdjusterInterface` should be used instead. +- Deprecated `craft\commerce\exports\Expanded`. `CraftCms\Commerce\Order\Exporters\Expanded` should be used instead. +- Deprecated `craft\commerce\exports\LineItemExport`. `CraftCms\Commerce\Order\Exporters\LineItemExport` should be used instead. +- Deprecated `craft\commerce\exports\OrderExport`. `CraftCms\Commerce\Order\Exporters\OrderExport` should be used instead. +- Deprecated `craft\commerce\errors\OrderAdjustmentNotFoundException`. `CraftCms\Commerce\Order\Exceptions\OrderAdjustmentNotFoundException` should be used instead. +- Deprecated `craft\commerce\errors\CurrencyException`. `CraftCms\Commerce\Order\Exceptions\CurrencyException` should be used instead. +- Deprecated `craft\commerce\errors\LineItemNotFoundException`. `CraftCms\Commerce\Order\Exceptions\LineItemNotFoundException` should be used instead. +- Deprecated `craft\commerce\errors\OrderStatusException`. `CraftCms\Commerce\Order\Exceptions\OrderStatusException` should be used instead. +- Deprecated `craft\commerce\errors\LineItemException`. `CraftCms\Commerce\Order\Exceptions\LineItemException` should be used instead. +- Deprecated `craft\commerce\events\AddLineItemEvent`. `CraftCms\Commerce\Order\Events\AddLineItemEvent` should be used instead. +- Deprecated `craft\commerce\events\CartEvent`. `CraftCms\Commerce\Order\Events\CartEvent` should be used instead. +- Deprecated `craft\commerce\events\CartPurgeEvent`. `CraftCms\Commerce\Order\Events\CartPurgeEvent` should be used instead. +- Deprecated `craft\commerce\events\DefaultLineItemStatusEvent`. `CraftCms\Commerce\Order\Events\DefaultLineItemStatusEvent` should be used instead. +- Deprecated `craft\commerce\events\DefaultOrderStatusEvent`. `CraftCms\Commerce\Order\Events\DefaultOrderStatusEvent` should be used instead. +- Deprecated `craft\commerce\events\LineItemEvent`. `CraftCms\Commerce\Order\Events\LineItemEvent` should be used instead. +- Deprecated `craft\commerce\events\ModifyCartInfoEvent`. `CraftCms\Commerce\Order\Events\ModifyCartInfoEvent` should be used instead. +- Deprecated `craft\commerce\events\OrderLineItemsRefreshEvent`. `CraftCms\Commerce\Order\Events\OrderLineItemsRefreshEvent` should be used instead. +- Deprecated `craft\commerce\events\OrderNoticeEvent`. `CraftCms\Commerce\Order\Events\OrderNoticeEvent` should be used instead. +- Deprecated `craft\commerce\events\OrderStatusEmailsEvent`. `CraftCms\Commerce\Order\Events\OrderStatusEmailsEvent` should be used instead. +- Deprecated `craft\commerce\events\OrderStatusEvent`. `CraftCms\Commerce\Order\Events\OrderStatusEvent` should be used instead. +- Deprecated `craft\commerce\events\PurgeAddressesEvent`. `CraftCms\Commerce\Order\Events\PurgeAddressesEvent` should be used instead. +- Removed `craft\commerce\records\OrderHistory`. `CraftCms\Commerce\Order\Records\OrderHistory` should be used instead. +- Removed `craft\commerce\records\OrderAdjustment`. `CraftCms\Commerce\Order\Records\OrderAdjustment` should be used instead. +- Removed `craft\commerce\records\LineItemStatus`. `CraftCms\Commerce\Order\Records\LineItemStatus` should be used instead. +- Removed `craft\commerce\records\OrderStatus`. `CraftCms\Commerce\Order\Records\OrderStatus` should be used instead. +- Removed `craft\commerce\records\OrderNotice`. `CraftCms\Commerce\Order\Records\OrderNotice` should be used instead. +- Removed `LineItem::getSaleAmount()`, `refreshFromPurchasable()`, and `populateFromPurchasable()`. +- Removed `LineItems::createLineItem()`. +- Removed `Carts::getCartName()`. The `cartCookie['name']` config setting should be used instead. +- Added `CraftCms\Commerce\Order\Conditions\OrderCondition`, `CompletedConditionRule`, `CouponCodeConditionRule`, `CustomerConditionRule`, `DateOrderedConditionRule`, `HasAdminNoticesConditionRule`, `PaidConditionRule`, `HasPurchasableConditionRule`, `ContainsPurchasablesConditionRule`, `OrderStatusConditionRule`, `OrderSiteConditionRule`, `PaymentGatewayConditionRule`, `ReferenceConditionRule`, `ShippingMethodConditionRule`, `ShippingAddressZoneConditionRule`, `DiscountedItemSubtotalConditionRule`, `ItemSubtotalConditionRule`, `ItemTotalConditionRule`, `TotalConditionRule`, `TotalDiscountConditionRule`, `TotalPaidConditionRule`, `TotalPriceConditionRule`, `TotalQtyConditionRule`, `TotalTaxConditionRule`, and `TotalWeightConditionRule`. +- Added `CraftCms\Commerce\Order\Conditions\OrderTextValuesAttributeConditionRule`, `OrderValuesAttributeConditionRule`, and `OrderCurrencyValuesAttributeConditionRule`. +- Added `CraftCms\Commerce\Order\Conditions\DiscountOrderCondition`, `GatewayOrderCondition`, `ShippingMethodOrderCondition`, and `ShippingRuleOrderCondition`. +- Deprecated `craft\commerce\elements\conditions\orders\*`. The `CraftCms\Commerce\Order\Conditions` equivalents should be used instead. +- Added `CraftCms\Commerce\Order\Actions\CopyLoadCartUrl`, `DownloadOrderPdfAction`, and `UpdateOrderStatus`. +- Deprecated `craft\commerce\elements\actions\CopyLoadCartUrl`, `DownloadOrderPdfAction`, and `UpdateOrderStatus`. The `CraftCms\Commerce\Order\Actions` equivalents should be used instead. +- Added `Order::getObjectTemplateVariables()`, ported from 5.x, fixing a bug where object templates referencing a datetime attribute (e.g. the order reference format using `dateOrdered|date(...)`) threw an "Array to string conversion" error. ([#4255](https://github.com/craftcms/commerce/issues/4255)) +- Added `CraftCms\Commerce\Order\Conditions\OrderCondition::$queryParams`, matching the per-instance exclusive-query-param scoping `craft\base\conditions\BaseCondition::$queryParams` provided in the legacy Yii2 condition system. + +#### Controllers + +- Removed `craft\commerce\controllers\OrdersController`. `CraftCms\Commerce\Http\Controllers\OrdersController` should be used instead. +- Removed `craft\commerce\controllers\CartController`. `CraftCms\Commerce\Http\Controllers\CartController` should be used instead. +- Added the `commerce/cart/show`, `commerce/cart/update`, `commerce/cart/load`, and `commerce/cart/forget` actions. +- Deprecated the `commerce/cart/get-cart` action. `commerce/cart/show` should be used instead. +- Deprecated the `commerce/cart/update-cart` action. `commerce/cart/update` should be used instead. +- Deprecated the `commerce/cart/load-cart` action. `commerce/cart/load` should be used instead. +- Deprecated the `commerce/cart/forget-cart` action. `commerce/cart/forget` should be used instead. +- Added `CraftCms\Commerce\Http\Middleware\LogDeprecatedAction`. +- Cart recovery URLs now point to the `commerce/cart/load` action. +- The example templates now use the `commerce/cart/update` and `commerce/cart/load` actions. +- Removed `craft\commerce\controllers\OrderStatusesController`. `CraftCms\Commerce\Http\Controllers\Settings\OrderStatusesController` should be used instead. +- Removed `craft\commerce\controllers\LineItemStatusesController`. `CraftCms\Commerce\Http\Controllers\Settings\LineItemStatusesController` should be used instead. +- Removed `craft\commerce\controllers\UserOrdersController`. `CraftCms\Commerce\Http\Controllers\UserOrdersController` should be used instead. +- Removed `craft\commerce\controllers\OrderSettingsController`. `CraftCms\Commerce\Http\Controllers\Settings\OrderSettingsController` should be used instead. +- Moved the `commerce/settings/ordersettings`, `commerce/settings/orderstatuses`, and `commerce/settings/lineitemstatuses` control panel routes to `commerce/settings/orders/fields`, `commerce/settings/orders/statuses`, and `commerce/settings/orders/line-item-statuses`. +- Removed `craft\commerce\controllers\DownloadsController`. `CraftCms\Commerce\Http\Controllers\DownloadsController` should be used instead. + +### Payments + +- Added `CraftCms\Commerce\Payment\Transactions`. +- Added `CraftCms\Commerce\Support\Facades\Transactions`. +- Added `CraftCms\Commerce\Payment\PaymentSources`. +- Added `CraftCms\Commerce\Support\Facades\PaymentSources`. +- Added `CraftCms\Commerce\Payment\Gateway\Gateways`. +- Added `CraftCms\Commerce\Support\Facades\Gateways`. +- Added `CraftCms\Commerce\Payment\Payments`. +- Added `CraftCms\Commerce\Support\Facades\Payments`. +- Added `CraftCms\Commerce\Payment\Webhooks`. +- Added `CraftCms\Commerce\Support\Facades\Webhooks`. +- Added `CraftCms\Commerce\Payment\Currencies`. +- Added `CraftCms\Commerce\Support\Facades\Currencies`. +- Added `CraftCms\Commerce\Payment\PaymentCurrencies`. +- Added `CraftCms\Commerce\Support\Facades\PaymentCurrencies`. +- Added `CraftCms\Commerce\Payment\Records\Transaction`. +- Added `CraftCms\Commerce\Payment\Records\PaymentSource`. +- Added `CraftCms\Commerce\Payment\Gateway\Records\Gateway`. +- Added `CraftCms\Commerce\Payment\Records\PaymentCurrency`. +- Added `CraftCms\Commerce\Payment\Models\Transaction`. +- Added `CraftCms\Commerce\Payment\Models\PaymentSource`. +- Added `CraftCms\Commerce\Payment\Models\PaymentCurrency`. +- Added `CraftCms\Commerce\Payment\Forms\BasePaymentForm`. +- Added `CraftCms\Commerce\Payment\Forms\OffsitePaymentForm`. +- Added `CraftCms\Commerce\Payment\Forms\CreditCardPaymentForm`. +- Added `CraftCms\Commerce\Payment\Forms\DummyPaymentForm`. +- Added `CraftCms\Commerce\Payment\Gateway\Responses\Dummy`. +- Added `CraftCms\Commerce\Payment\Gateway\Responses\Manual`. +- Added `CraftCms\Commerce\Payment\Exceptions\PaymentException`. +- Added `CraftCms\Commerce\Payment\Exceptions\PaymentSourceException`. +- Added `CraftCms\Commerce\Payment\Exceptions\PaymentSourceCreatedLaterException`. +- Added `CraftCms\Commerce\Payment\Exceptions\RefundException`. +- Added `CraftCms\Commerce\Payment\Exceptions\TransactionException`. +- Added `CraftCms\Commerce\Payment\Gateway\Exceptions\GatewayException`. +- Added `CraftCms\Commerce\Payment\Gateway\Contracts\GatewayInterface`. +- Added `CraftCms\Commerce\Payment\Gateway\Contracts\RequestResponseInterface`. +- Added `CraftCms\Commerce\Payment\Gateway\GatewayTypes`, a `CraftCms\Cms\Component\TypeRegistry` for registering gateway types. +- Added `CraftCms\Commerce\Support\Facades\GatewayTypes`. +- Deprecated `craft\commerce\services\Gateways::EVENT_REGISTER_GATEWAY_TYPES`. `CraftCms\Commerce\Payment\Gateway\GatewayTypes::register()` should be used instead. +- Added `CraftCms\Commerce\Payment\Gateway\Gateway`. +- Added `CraftCms\Commerce\Payment\Gateway\Types\Dummy`. +- Added `CraftCms\Commerce\Payment\Gateway\Types\Manual`. +- Added `CraftCms\Commerce\Payment\Gateway\Types\MissingGateway`. +- Added `CraftCms\Commerce\Helpers\PaymentForm`. +- Added `CraftCms\Commerce\Payment\Events\PaymentCurrencyRateEvent`. +- Added `CraftCms\Commerce\Payment\Events\PaymentSourceEvent`. +- Added `CraftCms\Commerce\Payment\Events\ProcessPaymentEvent`. +- Added `CraftCms\Commerce\Payment\Events\RefundTransactionEvent`. +- Added `CraftCms\Commerce\Payment\Events\TransactionEvent`. +- Added `CraftCms\Commerce\Payment\Events\UpdatePrimaryPaymentSourceEvent`. +- Added `CraftCms\Commerce\Payment\Events\WebhookEvent`. +- Deprecated `craft\commerce\services\Transactions`. `CraftCms\Commerce\Payment\Transactions` should be used instead. +- Deprecated `craft\commerce\services\PaymentSources`. `CraftCms\Commerce\Payment\PaymentSources` should be used instead. +- Deprecated `craft\commerce\services\Gateways`. `CraftCms\Commerce\Payment\Gateway\Gateways` should be used instead. +- Deprecated `craft\commerce\base\Gateway`. `CraftCms\Commerce\Payment\Gateway\Gateway` should be used instead. +- Removed `craft\commerce\base\GatewayTrait`. Its properties and methods are now part of `CraftCms\Commerce\Payment\Gateway\Gateway`. +- Deprecated `craft\commerce\gateways\Dummy`. `CraftCms\Commerce\Payment\Gateway\Types\Dummy` should be used instead. +- Deprecated `craft\commerce\gateways\Manual`. `CraftCms\Commerce\Payment\Gateway\Types\Manual` should be used instead. +- Deprecated `craft\commerce\gateways\MissingGateway`. `CraftCms\Commerce\Payment\Gateway\Types\MissingGateway` should be used instead. +- Deprecated `craft\commerce\helpers\PaymentForm`. `CraftCms\Commerce\Helpers\PaymentForm` should be used instead. +- Deprecated `craft\commerce\services\Payments`. `CraftCms\Commerce\Payment\Payments` should be used instead. +- Deprecated `craft\commerce\services\Webhooks`. `CraftCms\Commerce\Payment\Webhooks` should be used instead. +- Deprecated `craft\commerce\services\Currencies`. `CraftCms\Commerce\Payment\Currencies` should be used instead. +- Deprecated `craft\commerce\services\PaymentCurrencies`. `CraftCms\Commerce\Payment\PaymentCurrencies` should be used instead. +- Deprecated `craft\commerce\models\Transaction`. `CraftCms\Commerce\Payment\Models\Transaction` should be used instead. +- Deprecated `craft\commerce\models\PaymentSource`. `CraftCms\Commerce\Payment\Models\PaymentSource` should be used instead. +- Deprecated `craft\commerce\models\PaymentCurrency`. `CraftCms\Commerce\Payment\Models\PaymentCurrency` should be used instead. +- Deprecated `craft\commerce\models\payments\BasePaymentForm`. `CraftCms\Commerce\Payment\Forms\BasePaymentForm` should be used instead. +- Deprecated `craft\commerce\models\payments\OffsitePaymentForm`. `CraftCms\Commerce\Payment\Forms\OffsitePaymentForm` should be used instead. +- Deprecated `craft\commerce\models\payments\CreditCardPaymentForm`. `CraftCms\Commerce\Payment\Forms\CreditCardPaymentForm` should be used instead. +- Deprecated `craft\commerce\models\payments\DummyPaymentForm`. `CraftCms\Commerce\Payment\Forms\DummyPaymentForm` should be used instead. +- Deprecated `craft\commerce\models\responses\Dummy`. `CraftCms\Commerce\Payment\Gateway\Responses\Dummy` should be used instead. +- Deprecated `craft\commerce\models\responses\Manual`. `CraftCms\Commerce\Payment\Gateway\Responses\Manual` should be used instead. +- Deprecated `craft\commerce\errors\PaymentException`. `CraftCms\Commerce\Payment\Exceptions\PaymentException` should be used instead. +- Deprecated `craft\commerce\errors\PaymentSourceException`. `CraftCms\Commerce\Payment\Exceptions\PaymentSourceException` should be used instead. +- Deprecated `craft\commerce\errors\PaymentSourceCreatedLaterException`. `CraftCms\Commerce\Payment\Exceptions\PaymentSourceCreatedLaterException` should be used instead. +- Deprecated `craft\commerce\errors\RefundException`. `CraftCms\Commerce\Payment\Exceptions\RefundException` should be used instead. +- Deprecated `craft\commerce\errors\TransactionException`. `CraftCms\Commerce\Payment\Exceptions\TransactionException` should be used instead. +- Deprecated `craft\commerce\errors\GatewayException`. `CraftCms\Commerce\Payment\Gateway\Exceptions\GatewayException` should be used instead. +- Deprecated `craft\commerce\base\GatewayInterface`. `CraftCms\Commerce\Payment\Gateway\Contracts\GatewayInterface` should be used instead. +- Deprecated `craft\commerce\base\RequestResponseInterface`. `CraftCms\Commerce\Payment\Gateway\Contracts\RequestResponseInterface` should be used instead. +- Deprecated `craft\commerce\events\PaymentSourceEvent`. `CraftCms\Commerce\Payment\Events\PaymentSourceEvent` should be used instead. +- Deprecated `craft\commerce\events\ProcessPaymentEvent`. `CraftCms\Commerce\Payment\Events\ProcessPaymentEvent` should be used instead. +- Deprecated `craft\commerce\events\RefundTransactionEvent`. `CraftCms\Commerce\Payment\Events\RefundTransactionEvent` should be used instead. +- Deprecated `craft\commerce\events\TransactionEvent`. `CraftCms\Commerce\Payment\Events\TransactionEvent` should be used instead. +- Deprecated `craft\commerce\events\UpdatePrimaryPaymentSourceEvent`. `CraftCms\Commerce\Payment\Events\UpdatePrimaryPaymentSourceEvent` should be used instead. +- Deprecated `craft\commerce\events\WebhookEvent`. `CraftCms\Commerce\Payment\Events\WebhookEvent` should be used instead. +- Removed `craft\commerce\records\Transaction`. `CraftCms\Commerce\Payment\Records\Transaction` should be used instead. +- Removed `craft\commerce\records\PaymentSource`. `CraftCms\Commerce\Payment\Records\PaymentSource` should be used instead. +- Removed `craft\commerce\records\Gateway`. `CraftCms\Commerce\Payment\Gateway\Records\Gateway` should be used instead. +- Removed `craft\commerce\records\PaymentCurrency`. `CraftCms\Commerce\Payment\Records\PaymentCurrency` should be used instead. +- Removed `Gateways::getGatewayOverrides()`. +- Removed `Transactions::deleteTransaction()`. `deleteTransactionById()` should be used instead. +- Widened `RefundTransactionEvent::$amount` to `?float` to allow `null` for a full refund. +- Widened `WebhookEvent::$response` to accept both `Illuminate\Http\Response` and `yii\web\Response`. +- `craft\commerce\base\Gateway` now uses `CraftCms\Commerce\Order\Conditions\GatewayOrderCondition` and `CraftCms\Commerce\Address\Conditions\GatewayAddressCondition`. + +#### Controllers + +- Removed `craft\commerce\controllers\PaymentsController`. `CraftCms\Commerce\Http\Controllers\PaymentsController` should be used instead. +- Removed `craft\commerce\controllers\PaymentSourcesController`. `CraftCms\Commerce\Http\Controllers\PaymentSourcesController` should be used instead. +- Removed `craft\commerce\controllers\WebhooksController`. `CraftCms\Commerce\Http\Controllers\WebhooksController` should be used instead. +- Removed `craft\commerce\controllers\Settings\GatewaysController`. `CraftCms\Commerce\Http\Controllers\Settings\GatewaysController` should be used instead. +- The "Gateways" settings screen is now searchable and has a "View" menu for choosing columns, with new "Payment Type", "Payment Sources", and "Webhook URL" columns. +- Removed `craft\commerce\controllers\PaymentCurrenciesController`. `CraftCms\Commerce\Http\Controllers\Settings\PaymentCurrenciesController` should be used instead. +- The "Payment Currencies" screen is now searchable and has a "View" menu for choosing columns. + +### Promotions + +- Added `CraftCms\Commerce\Promotion\Discounts`. +- Added `CraftCms\Commerce\Support\Facades\Discounts`. +- Added `CraftCms\Commerce\Promotion\Sales`. +- Added `CraftCms\Commerce\Support\Facades\Sales`. +- Added `CraftCms\Commerce\Promotion\Coupons`. +- Added `CraftCms\Commerce\Support\Facades\Coupons`. +- Added `CraftCms\Commerce\Promotion\Models\Discount`. +- Added `CraftCms\Commerce\Promotion\Models\Sale`. +- Added `CraftCms\Commerce\Promotion\Models\Coupon`. +- Added `CraftCms\Commerce\Promotion\Records\Discount`. +- Added `CraftCms\Commerce\Promotion\Records\DiscountCategory`. +- Added `CraftCms\Commerce\Promotion\Records\DiscountPurchasable`. +- Added `CraftCms\Commerce\Promotion\Records\CustomerDiscountUse`. +- Added `CraftCms\Commerce\Promotion\Records\EmailDiscountUse`. +- Added `CraftCms\Commerce\Promotion\Records\Sale`. +- Added `CraftCms\Commerce\Promotion\Records\SaleCategory`. +- Added `CraftCms\Commerce\Promotion\Records\SalePurchasable`. +- Added `CraftCms\Commerce\Promotion\Records\SaleUserGroup`. +- Added `CraftCms\Commerce\Promotion\Records\Coupon`. +- Added `CraftCms\Commerce\Promotion\Events\DiscountAdjustmentsEvent`. +- Added `CraftCms\Commerce\Promotion\Events\DiscountEvent`. +- Added `CraftCms\Commerce\Promotion\Events\MatchLineItemEvent`. +- Added `CraftCms\Commerce\Promotion\Events\MatchOrderEvent`. +- Added `CraftCms\Commerce\Promotion\Events\SaleEvent`. +- Added `CraftCms\Commerce\Promotion\Events\SaleMatchEvent`. +- Deprecated `craft\commerce\services\Discounts`. `CraftCms\Commerce\Promotion\Discounts` should be used instead. +- Deprecated `craft\commerce\services\Sales`. `CraftCms\Commerce\Promotion\Sales` should be used instead. +- Deprecated `craft\commerce\services\Coupons`. `CraftCms\Commerce\Promotion\Coupons` should be used instead. +- Deprecated `craft\commerce\models\Discount`. `CraftCms\Commerce\Promotion\Models\Discount` should be used instead. +- Deprecated `craft\commerce\models\Sale`. `CraftCms\Commerce\Promotion\Models\Sale` should be used instead. +- Deprecated `craft\commerce\models\Coupon`. `CraftCms\Commerce\Promotion\Models\Coupon` should be used instead. +- Deprecated `craft\commerce\events\DiscountAdjustmentsEvent`. `CraftCms\Commerce\Promotion\Events\DiscountAdjustmentsEvent` should be used instead. +- Deprecated `craft\commerce\events\DiscountEvent`. `CraftCms\Commerce\Promotion\Events\DiscountEvent` should be used instead. +- Deprecated `craft\commerce\events\MatchLineItemEvent`. `CraftCms\Commerce\Promotion\Events\MatchLineItemEvent` should be used instead. +- Deprecated `craft\commerce\events\MatchOrderEvent`. `CraftCms\Commerce\Promotion\Events\MatchOrderEvent` should be used instead. +- Deprecated `craft\commerce\events\SaleEvent`. `CraftCms\Commerce\Promotion\Events\SaleEvent` should be used instead. +- Deprecated `craft\commerce\events\SaleMatchEvent`. `CraftCms\Commerce\Promotion\Events\SaleMatchEvent` should be used instead. +- Removed `craft\commerce\records\DiscountCategory`. `CraftCms\Commerce\Promotion\Records\DiscountCategory` should be used instead. +- Removed `craft\commerce\records\DiscountPurchasable`. `CraftCms\Commerce\Promotion\Records\DiscountPurchasable` should be used instead. +- Removed `craft\commerce\records\CustomerDiscountUse`. `CraftCms\Commerce\Promotion\Records\CustomerDiscountUse` should be used instead. +- Removed `craft\commerce\records\EmailDiscountUse`. `CraftCms\Commerce\Promotion\Records\EmailDiscountUse` should be used instead. +- Removed `craft\commerce\records\Sale`. `CraftCms\Commerce\Promotion\Records\Sale` should be used instead. +- Removed `craft\commerce\records\SaleCategory`. `CraftCms\Commerce\Promotion\Records\SaleCategory` should be used instead. +- Removed `craft\commerce\records\SalePurchasable`. `CraftCms\Commerce\Promotion\Records\SalePurchasable` should be used instead. +- Removed `craft\commerce\records\SaleUserGroup`. `CraftCms\Commerce\Promotion\Records\SaleUserGroup` should be used instead. +- Removed `craft\commerce\records\Discount`. `CraftCms\Commerce\Promotion\Records\Discount` should be used instead. +- Removed `craft\commerce\records\Coupon`. `CraftCms\Commerce\Promotion\Records\Coupon` should be used instead. +- Removed `craft\commerce\models\Discount::setExcludeOnSale()`/`getExcludeOnSale()` and the `excludeOnSale` shim. `Discount::$excludeOnPromotion` should be used instead. +- `CraftCms\Commerce\Promotion\Models\Discount` now uses `CraftCms\Commerce\Order\Conditions\DiscountOrderCondition`, `CraftCms\Commerce\Customer\Conditions\DiscountCustomerCondition`, and `CraftCms\Commerce\Address\Conditions\DiscountAddressCondition`. +- Added `CraftCms\Commerce\Address\Conditions\DiscountAddressCondition`, `ZoneAddressCondition`, `GatewayAddressCondition`, and `PostalCodeFormulaConditionRule`. +- Deprecated `craft\commerce\elements\conditions\addresses\DiscountAddressCondition`, `ZoneAddressCondition`, `GatewayAddressCondition`, and `PostalCodeFormulaConditionRule`. The `CraftCms\Commerce\Address\Conditions` equivalents should be used instead. +- Added `CraftCms\Commerce\Promotion\Actions\CreateDiscount` and `CreateSale`. +- Deprecated `craft\commerce\elements\actions\CreateDiscount` and `CreateSale`. The `CraftCms\Commerce\Promotion\Actions` equivalents should be used instead. +- `CraftCms\Commerce\Promotion\Actions\CreateDiscount` now redirects to the new discount screen from `performAction()`, so it works from the element index’s bulk actions bar. +- `CraftCms\Commerce\Promotion\Models\Coupon::getRules()` now validates that `code` is unique (case-insensitively, against every coupon regardless of discount), replacing `craft\commerce\validators\CouponsValidator`. +- Removed `craft\commerce\validators\CouponsValidator`. + +#### Controllers + +- Removed `craft\commerce\controllers\SalesController`. `CraftCms\Commerce\Http\Controllers\Settings\SalesController` should be used instead. +- Removed `craft\commerce\controllers\DiscountsController`. `CraftCms\Commerce\Http\Controllers\Settings\DiscountsController` should be used instead. + +### Purchasables + +- Added `CraftCms\Commerce\Purchasable\Elements\Purchasable`. +- Added `CraftCms\Commerce\Purchasable\Elements\Donation`. +- Added `CraftCms\Commerce\Purchasable\Models\Donation`. +- Added `CraftCms\Commerce\Purchasable\Models\PurchasableStore`. +- Added `CraftCms\Commerce\Purchasable\Queries\PurchasableQuery`. +- Added `CraftCms\Commerce\Purchasable\Queries\DonationQuery`. +- Added `CraftCms\Commerce\Purchasable\Queries\PurchasableConditionQuery`. +- Added `CraftCms\Commerce\Purchasable\Records\Purchasable`. +- Added `CraftCms\Commerce\Purchasable\Records\PurchasableStore`. +- Added `CraftCms\Commerce\Purchasable\Validation\PurchasableRules`. +- Added `CraftCms\Commerce\Purchasable\Validation\DonationRules`. +- Added `CraftCms\Commerce\Purchasable\Purchasables`. +- Added `CraftCms\Commerce\Support\Facades\Purchasables`. +- Added `CraftCms\Commerce\Purchasable\Contracts\PurchasableInterface`. +- Added `CraftCms\Commerce\Purchasable\Events\PurchasableAvailableEvent`. +- Added `CraftCms\Commerce\Purchasable\Events\PurchasableOutOfStockPurchasesAllowedEvent`. +- Added `CraftCms\Commerce\Purchasable\Events\PurchasableShippableEvent`. +- Added `CraftCms\Commerce\Purchasable\PurchasableTypes`, a `CraftCms\Cms\Component\TypeRegistry` for registering purchasable element types. +- Added `CraftCms\Commerce\Support\Facades\PurchasableTypes`. +- Deprecated `craft\commerce\services\Purchasables::EVENT_REGISTER_PURCHASABLE_ELEMENT_TYPES`. `CraftCms\Commerce\Purchasable\PurchasableTypes::register()` should be used instead. +- Deprecated `craft\commerce\base\Purchasable`. `CraftCms\Commerce\Purchasable\Elements\Purchasable` should be used instead. +- Deprecated `craft\commerce\elements\Donation`. `CraftCms\Commerce\Purchasable\Elements\Donation` should be used instead. +- Deprecated `craft\commerce\records\Donation`. `CraftCms\Commerce\Purchasable\Models\Donation` should be used instead. +- Deprecated `craft\commerce\models\PurchasableStore`. `CraftCms\Commerce\Purchasable\Models\PurchasableStore` should be used instead. +- Deprecated `craft\commerce\elements\db\DonationQuery`. `CraftCms\Commerce\Purchasable\Queries\DonationQuery` should be used instead. +- Deprecated `craft\commerce\services\Purchasables`. `CraftCms\Commerce\Purchasable\Purchasables` should be used instead. +- Deprecated `craft\commerce\base\PurchasableInterface`. `CraftCms\Commerce\Purchasable\Contracts\PurchasableInterface` should be used instead. +- Deprecated `craft\commerce\events\PurchasableAvailableEvent`. `CraftCms\Commerce\Purchasable\Events\PurchasableAvailableEvent` should be used instead. +- Deprecated `craft\commerce\events\PurchasableOutOfStockPurchasesAllowedEvent`. `CraftCms\Commerce\Purchasable\Events\PurchasableOutOfStockPurchasesAllowedEvent` should be used instead. +- Deprecated `craft\commerce\events\PurchasableShippableEvent`. `CraftCms\Commerce\Purchasable\Events\PurchasableShippableEvent` should be used instead. +- Removed `craft\commerce\records\Purchasable`. `CraftCms\Commerce\Purchasable\Records\Purchasable` should be used instead. +- Removed `craft\commerce\records\PurchasableStore`. `CraftCms\Commerce\Purchasable\Records\PurchasableStore` should be used instead. +- Removed `craft\commerce\elements\db\PurchasableQuery`. `CraftCms\Commerce\Purchasable\Queries\PurchasableQuery` should be used instead. +- Removed `craft\commerce\records\OrderStatusEmail` as it was unused. +- Added `CraftCms\Commerce\Purchasable\Conditions\PurchasableConditionRule`, `PurchasableTypeConditionRule`, `SkuConditionRule`, `CatalogPricingRulePurchasableCategoryConditionRule`, and `CatalogPricingRulePurchasableCondition`. +- Deprecated `craft\commerce\elements\conditions\purchasables\PurchasableConditionRule`, `PurchasableTypeConditionRule`, `SkuConditionRule`, `CatalogPricingRulePurchasableCategoryConditionRule`, and `CatalogPricingRulePurchasableCondition`. The `CraftCms\Commerce\Purchasable\Conditions` equivalents should be used instead. +- Added `CraftCms\Commerce\Purchasable\FieldLayoutElements\PurchasableSkuField`, `PurchasablePriceField`, `PurchasableStockField`, `PurchasableWeightField`, `PurchasableDimensionsField`, `PurchasableAllowedQtyField`, `PurchasableAvailableForPurchaseField`, `PurchasableFreeShippingField`, and `PurchasablePromotableField`. +- Deprecated `craft\commerce\fieldlayoutelements\PurchasableSkuField`, `PurchasablePriceField`, `PurchasableStockField`, `PurchasableWeightField`, `PurchasableDimensionsField`, `PurchasableAllowedQtyField`, `PurchasableAvailableForPurchaseField`, `PurchasableFreeShippingField`, and `PurchasablePromotableField`. The `CraftCms\Commerce\Purchasable\FieldLayoutElements` equivalents should be used instead. +- **Breaking**: Changed `PurchasableInterface::getLineItemRules(LineItem $lineItem): array` to `validateLineItem(LineItem $lineItem): void`, which adds errors directly to `$lineItem->errors()` instead of returning legacy Yii2-shaped inline-closure validation rules. Third-party purchasable types must update their implementation accordingly. + +#### Controllers + +- Removed `craft\commerce\controllers\DonationsController`. `CraftCms\Commerce\Http\Controllers\DonationsController` should be used instead. +- Moved the "Donations" Control Panel nav item to directly beneath the product types. + +### Shipping + +- Added `CraftCms\Commerce\Shipping\ShippingMethods`. +- Added `CraftCms\Commerce\Support\Facades\ShippingMethods`. +- Added `CraftCms\Commerce\Shipping\ShippingRules`. +- Added `CraftCms\Commerce\Support\Facades\ShippingRules`. +- Added `CraftCms\Commerce\Shipping\ShippingRuleCategories`. +- Added `CraftCms\Commerce\Support\Facades\ShippingRuleCategories`. +- Added `CraftCms\Commerce\Shipping\ShippingCategories`. +- Added `CraftCms\Commerce\Support\Facades\ShippingCategories`. +- Added `CraftCms\Commerce\Shipping\ShippingZones`. +- Added `CraftCms\Commerce\Support\Facades\ShippingZones`. +- Added `CraftCms\Commerce\Shipping\Models\ShippingRule`. +- Added `CraftCms\Commerce\Shipping\Models\ShippingMethod`. +- Added `CraftCms\Commerce\Shipping\Models\ShippingMethodOption`. +- Added `CraftCms\Commerce\Shipping\Models\BaseShippingMethod`. +- Added `CraftCms\Commerce\Shipping\Models\ShippingAddressZone`. +- Added `CraftCms\Commerce\Shipping\Models\ShippingRuleCategory`. +- Added `CraftCms\Commerce\Shipping\Models\ShippingCategory`. +- Added `CraftCms\Commerce\Shipping\Records\ShippingZone`. +- Added `CraftCms\Commerce\Shipping\Records\ShippingMethod`. +- Added `CraftCms\Commerce\Shipping\Records\ShippingRule`. +- Added `CraftCms\Commerce\Shipping\Records\ShippingRuleCategory`. +- Added `CraftCms\Commerce\Shipping\Records\ShippingCategory`. +- Added `CraftCms\Commerce\Shipping\Contracts\ShippingMethodInterface`. +- Added `CraftCms\Commerce\Shipping\Contracts\ShippingRuleInterface`. +- Added `CraftCms\Commerce\Shipping\Exceptions\ShippingMethodException`. +- Added `CraftCms\Commerce\Shipping\Events\RegisterAvailableShippingMethodsEvent`. +- Deprecated `craft\commerce\services\ShippingMethods`. `CraftCms\Commerce\Shipping\ShippingMethods` should be used instead. +- Deprecated `craft\commerce\services\ShippingRules`. `CraftCms\Commerce\Shipping\ShippingRules` should be used instead. +- Deprecated `craft\commerce\services\ShippingRuleCategories`. `CraftCms\Commerce\Shipping\ShippingRuleCategories` should be used instead. +- Deprecated `craft\commerce\services\ShippingCategories`. `CraftCms\Commerce\Shipping\ShippingCategories` should be used instead. +- Deprecated `craft\commerce\services\ShippingZones`. `CraftCms\Commerce\Shipping\ShippingZones` should be used instead. +- Deprecated `craft\commerce\models\ShippingRule`. `CraftCms\Commerce\Shipping\Models\ShippingRule` should be used instead. +- Deprecated `craft\commerce\models\ShippingMethod`. `CraftCms\Commerce\Shipping\Models\ShippingMethod` should be used instead. +- Deprecated `craft\commerce\models\ShippingMethodOption`. `CraftCms\Commerce\Shipping\Models\ShippingMethodOption` should be used instead. +- Deprecated `craft\commerce\base\ShippingMethod`. `CraftCms\Commerce\Shipping\Models\BaseShippingMethod` should be used instead. +- Deprecated `craft\commerce\models\ShippingAddressZone`. `CraftCms\Commerce\Shipping\Models\ShippingAddressZone` should be used instead. +- Deprecated `craft\commerce\models\ShippingRuleCategory`. `CraftCms\Commerce\Shipping\Models\ShippingRuleCategory` should be used instead. +- Deprecated `craft\commerce\models\ShippingCategory`. `CraftCms\Commerce\Shipping\Models\ShippingCategory` should be used instead. +- Deprecated `craft\commerce\base\ShippingMethodInterface`. `CraftCms\Commerce\Shipping\Contracts\ShippingMethodInterface` should be used instead. +- Deprecated `craft\commerce\base\ShippingRuleInterface`. `CraftCms\Commerce\Shipping\Contracts\ShippingRuleInterface` should be used instead. +- Deprecated `craft\commerce\errors\ShippingMethodException`. `CraftCms\Commerce\Shipping\Exceptions\ShippingMethodException` should be used instead. +- Deprecated `craft\commerce\events\RegisterAvailableShippingMethodsEvent`. `CraftCms\Commerce\Shipping\Events\RegisterAvailableShippingMethodsEvent` should be used instead. +- Removed `craft\commerce\records\ShippingZone`. `CraftCms\Commerce\Shipping\Records\ShippingZone` should be used instead. +- Removed `craft\commerce\records\ShippingMethod`. `CraftCms\Commerce\Shipping\Records\ShippingMethod` should be used instead. +- Removed `craft\commerce\records\ShippingRule`. `CraftCms\Commerce\Shipping\Records\ShippingRule` should be used instead. +- Removed `craft\commerce\records\ShippingRuleCategory`. `CraftCms\Commerce\Shipping\Records\ShippingRuleCategory` should be used instead. +- Removed `craft\commerce\records\ShippingCategory`. `CraftCms\Commerce\Shipping\Records\ShippingCategory` should be used instead. +- `CraftCms\Commerce\Shipping\Models\ShippingRule` and `BaseShippingMethod` now use `CraftCms\Commerce\Order\Conditions\ShippingRuleOrderCondition`, `ShippingMethodOrderCondition`, `CraftCms\Commerce\Customer\Conditions\ShippingRuleCustomerCondition`, and `ShippingMethodCustomerCondition`. +- `CraftCms\Commerce\Base\Zone` and `ZoneInterface` now use `CraftCms\Commerce\Address\Conditions\ZoneAddressCondition`. +- `CraftCms\Commerce\Shipping\Data\ShippingMethodOption` no longer includes `dateCreated`/`dateUpdated` in its serialized fields, as they never reflected anything meaningful for a per-order computed option. + +#### Controllers + +- Removed `craft\commerce\controllers\ShippingZonesController`. `CraftCms\Commerce\Http\Controllers\Settings\ShippingZonesController` should be used instead. +- Removed `craft\commerce\controllers\ShippingMethodsController`. `CraftCms\Commerce\Http\Controllers\Settings\ShippingMethodsController` should be used instead. +- Removed `craft\commerce\controllers\ShippingRulesController`. `CraftCms\Commerce\Http\Controllers\Settings\ShippingRulesController` should be used instead. +- Removed `craft\commerce\controllers\ShippingCategoriesController`. `CraftCms\Commerce\Http\Controllers\Settings\ShippingCategoriesController` should be used instead. +- The "Shipping Methods", "Shipping Zones" and "Shipping Categories" screens are now searchable and have a "View" menu for choosing columns. + +### Stores + +- Added `CraftCms\Commerce\Store\Stores`. +- Added `CraftCms\Commerce\Support\Facades\Stores`. +- Added `CraftCms\Commerce\Store\StoreSettings`. +- Added `CraftCms\Commerce\Support\Facades\StoreSettings`. +- Added `CraftCms\Commerce\Store\Models\Store`. +- Added `CraftCms\Commerce\Store\Models\StoreSettings`. +- Added `CraftCms\Commerce\Store\Models\SiteStore`. +- Added `CraftCms\Commerce\Store\Records\Store`. +- Added `CraftCms\Commerce\Store\Records\SiteStore`. +- Added `CraftCms\Commerce\Store\Records\StoreSettings`. +- Added `CraftCms\Commerce\Store\Concerns\StoreTrait`. +- Added `CraftCms\Commerce\Store\Contracts\HasStoreInterface`. +- Added `CraftCms\Commerce\Store\Exceptions\StoreNotFoundException`. +- Added `CraftCms\Commerce\Http\Controllers\Concerns\HasStoreManagementScreen`, a trait shared by store-scoped settings controllers for their CP screen chrome. +- Added `CraftCms\Commerce\Store\Events\DeleteStoreEvent`. +- Added `CraftCms\Commerce\Store\Events\StoreEvent`. +- Deprecated `craft\commerce\services\Stores`. `CraftCms\Commerce\Store\Stores` should be used instead. +- Removed `craft\commerce\behaviors\StoreBehavior`. `Site::getStore()` is provided via a `Illuminate\Support\Traits\Macroable` macro instead. +- Deprecated `craft\commerce\services\StoreSettings`. `CraftCms\Commerce\Store\StoreSettings` should be used instead. +- Deprecated `craft\commerce\models\Store`. `CraftCms\Commerce\Store\Models\Store` should be used instead. +- Deprecated `craft\commerce\models\StoreSettings`. `CraftCms\Commerce\Store\Models\StoreSettings` should be used instead. +- Deprecated `craft\commerce\models\SiteStore`. `CraftCms\Commerce\Store\Models\SiteStore` should be used instead. +- Deprecated `craft\commerce\base\StoreTrait`. `CraftCms\Commerce\Store\Concerns\StoreTrait` should be used instead. +- Deprecated `craft\commerce\base\HasStoreInterface`. `CraftCms\Commerce\Store\Contracts\HasStoreInterface` should be used instead. +- Deprecated `craft\commerce\errors\StoreNotFoundException`. `CraftCms\Commerce\Store\Exceptions\StoreNotFoundException` should be used instead. +- Deprecated `craft\commerce\events\DeleteStoreEvent`. `CraftCms\Commerce\Store\Events\DeleteStoreEvent` should be used instead. +- Deprecated `craft\commerce\events\StoreEvent`. `CraftCms\Commerce\Store\Events\StoreEvent` should be used instead. +- Removed `craft\commerce\services\Store`. `CraftCms\Commerce\Store\Stores` should be used instead. +- Removed `craft\commerce\models\Store::setCountries()`, `getCountries()`, `getCountriesList()`, `getAdministrativeAreasListByCountryCode()`, and `getMarketAddressCondition()`. `Store::getSettings()` (returning `CraftCms\Commerce\Store\Models\StoreSettings`) should be used instead. +- Removed `craft\commerce\records\SiteStore`. `CraftCms\Commerce\Store\Records\SiteStore` should be used instead. +- Removed `craft\commerce\records\StoreSettings`. `CraftCms\Commerce\Store\Records\StoreSettings` should be used instead. +- Removed `craft\commerce\records\Store`. `CraftCms\Commerce\Store\Records\Store` should be used instead. +- Removed `craft\commerce\base\StoreRecordTrait` as it was unused. +- Added a "Commerce" section to the Control Panel Settings page, with "General", "Stores", "Product Types", "Orders", "PDFs", "Emails", "Gateways", and "Transfers" tiles linking to the corresponding Commerce settings screens. +- Removed the "Settings" Control Panel nav item from the Commerce nav. Commerce settings are now reached from the Control Panel Settings page. +- The "Store Management" Control Panel nav item is now grouped under a "Settings" heading. + +#### Controllers + +- Removed `craft\commerce\controllers\StoreManagementController`. `CraftCms\Commerce\Http\Controllers\Settings\StoreManagementController` should be used instead. +- Removed `craft\commerce\controllers\StoresController`. `CraftCms\Commerce\Http\Controllers\Settings\StoresController` should be used instead. +- The "Stores" settings screen is now searchable and has a "View" menu for choosing columns. +- Moved the `commerce/settings/sites` control panel route to `commerce/settings/stores/sites`. + +### Subscriptions + +> [!WARNING] +> Subscription and billing-plan functionality has been removed from Craft Commerce entirely — there is no `Subscription` element type, no subscription field layout, and gateways can no longer implement subscription support. The `commerce_subscriptions`, `commerce_plans`, and related database tables are **not** dropped, so existing data is preserved for a future standalone migration path; only the application code (elements, services, records, models, forms, events, controllers, CP screens, and the gateway subscription interface) has been removed. + +- Removed `craft\commerce\elements\Subscription`, its element query, condition support, and deletion blocker. No replacement. +- Removed `craft\commerce\services\Subscriptions` and `CraftCms\Commerce\Subscription\Subscriptions`. No replacement. +- Removed `craft\commerce\services\Plans` and `CraftCms\Commerce\Subscription\Plans`. No replacement. +- Removed `craft\commerce\records\Subscription` and `CraftCms\Commerce\Subscription\Records\Subscription`. No replacement. +- Removed `craft\commerce\records\Plan` and `CraftCms\Commerce\Subscription\Records\Plan`. No replacement. +- Removed `craft\commerce\base\Plan`, `craft\commerce\base\PlanInterface`, `craft\commerce\base\PlanTrait`, and `CraftCms\Commerce\Subscription\Contracts\PlanInterface`. No replacement. +- Removed `craft\commerce\base\SubscriptionGateway` and `craft\commerce\base\SubscriptionGatewayInterface` — gateways can no longer declare subscription support. `craft\commerce\gateways\Dummy` now extends `craft\commerce\base\Gateway` directly. +- Removed `craft\commerce\base\SubscriptionResponseInterface` and `CraftCms\Commerce\Subscription\Contracts\SubscriptionResponseInterface`. No replacement. +- Removed `craft\commerce\models\subscriptions\DummyPlan` and `CraftCms\Commerce\Subscription\Models\DummyPlan`. No replacement. +- Removed `craft\commerce\models\subscriptions\SubscriptionPayment` and `CraftCms\Commerce\Subscription\Models\SubscriptionPayment`. No replacement. +- Removed `craft\commerce\models\subscriptions\CancelSubscriptionForm`, `SubscriptionForm`, `SwitchPlansForm`, and their `CraftCms\Commerce\Subscription\Forms\*` equivalents. No replacement. +- Removed `craft\commerce\models\responses\DummySubscriptionResponse` and `CraftCms\Commerce\Subscription\Responses\DummySubscriptionResponse`. No replacement. +- Removed `craft\commerce\errors\SubscriptionException` and `CraftCms\Commerce\Subscription\Exceptions\SubscriptionException`. No replacement. +- Removed `craft\commerce\events\CancelSubscriptionEvent`, `CreateSubscriptionEvent`, `PlanEvent`, `SubscriptionEvent`, `SubscriptionPaymentEvent`, `SubscriptionSwitchPlansEvent`, and their `CraftCms\Commerce\Subscription\Events\*` equivalents. No replacement. +- Removed the `commerce-manageSubscriptions` and `commerce-manageSubscriptionPlans` permissions. +- Removed the "Subscriptions" and "Subscription Plans" Control Panel nav items, the "Subscriptions" tab on the Edit User screen, and the "Subscription Settings" section of the general settings page (including the `updateBillingDetailsUrl` setting and `Settings::VIEW_URI_SUBSCRIPTIONS` constant). +- Removed the `craft.commerce.subscriptions()` Twig variable. No replacement. +- Removed `Gateways::getAllSubscriptionGateways()` (both `craft\commerce\services\Gateways` and `CraftCms\Commerce\Payment\Gateway\Gateways`). + +#### Controllers + +- Removed `craft\commerce\controllers\SubscriptionsController` and `CraftCms\Commerce\Http\Controllers\SubscriptionsController`. No replacement. +- Removed `craft\commerce\controllers\PlansController` and `CraftCms\Commerce\Http\Controllers\Settings\PlansController`. No replacement. + +### Tax + +- Added `CraftCms\Commerce\Tax\TaxCategories`. +- Added `CraftCms\Commerce\Support\Facades\TaxCategories`. +- Added `CraftCms\Commerce\Tax\TaxZones`. +- Added `CraftCms\Commerce\Support\Facades\TaxZones`. +- Added `CraftCms\Commerce\Support\Facades\TaxRates`. +- Added `CraftCms\Commerce\Support\Facades\Taxes`. +- Added `CraftCms\Commerce\Support\Facades\Vat`. +- Added `CraftCms\Commerce\Tax\Records\TaxCategory`. +- Added `CraftCms\Commerce\Tax\Records\TaxZone`. +- Added `CraftCms\Commerce\Tax\Records\TaxRate`. +- Added `CraftCms\Commerce\Tax\Models\TaxRate`. +- Added `CraftCms\Commerce\Tax\Models\TaxAddressZone`. +- Added `CraftCms\Commerce\Tax\Models\TaxCategory`. +- Added `CraftCms\Commerce\Tax\Contracts\TaxIdValidatorInterface`. +- Added `CraftCms\Commerce\Tax\Contracts\TaxEngineInterface`. +- Added `CraftCms\Commerce\Tax\Events\TaxEngineEvent`. +- Added `CraftCms\Commerce\Tax\Events\TaxIdValidatorsEvent`. +- Deprecated `craft\commerce\services\TaxCategories`. `CraftCms\Commerce\Tax\TaxCategories` should be used instead. +- Deprecated `craft\commerce\services\TaxZones`. `CraftCms\Commerce\Tax\TaxZones` should be used instead. +- Deprecated `craft\commerce\models\TaxRate`. `CraftCms\Commerce\Tax\Models\TaxRate` should be used instead. +- Deprecated `craft\commerce\models\TaxAddressZone`. `CraftCms\Commerce\Tax\Models\TaxAddressZone` should be used instead. +- Deprecated `craft\commerce\models\TaxCategory`. `CraftCms\Commerce\Tax\Models\TaxCategory` should be used instead. +- Deprecated `craft\commerce\base\TaxIdValidatorInterface`. `CraftCms\Commerce\Tax\Contracts\TaxIdValidatorInterface` should be used instead. +- Deprecated `craft\commerce\base\TaxEngineInterface`. `CraftCms\Commerce\Tax\Contracts\TaxEngineInterface` should be used instead. +- Deprecated `craft\commerce\events\TaxEngineEvent`. `CraftCms\Commerce\Tax\Events\TaxEngineEvent` should be used instead. +- Deprecated `craft\commerce\events\TaxIdValidatorsEvent`. `CraftCms\Commerce\Tax\Events\TaxIdValidatorsEvent` should be used instead. +- Removed `craft\commerce\records\TaxZone`. `CraftCms\Commerce\Tax\Records\TaxZone` should be used instead. +- Removed `craft\commerce\records\TaxRate`. `CraftCms\Commerce\Tax\Records\TaxRate` should be used instead. +- Removed `craft\commerce\records\TaxCategory`. `CraftCms\Commerce\Tax\Records\TaxCategory` should be used instead. + +#### Controllers + +- Removed `craft\commerce\controllers\TaxZonesController`. `CraftCms\Commerce\Http\Controllers\Settings\TaxZonesController` should be used instead. +- Removed `craft\commerce\controllers\TaxCategoriesController`. `CraftCms\Commerce\Http\Controllers\Settings\TaxCategoriesController` should be used instead. +- Removed `craft\commerce\controllers\TaxRatesController`. `CraftCms\Commerce\Http\Controllers\Settings\TaxRatesController` should be used instead. +- The "Tax Rates", "Tax Zones" and "Tax Categories" screens are now searchable and have a "View" menu for choosing columns. + +### Transfers + +- Added `CraftCms\Commerce\Transfer\Elements\Transfer`. +- Added `CraftCms\Commerce\Transfer\Queries\TransferQuery`. +- Added `CraftCms\Commerce\Transfer\Conditions\TransferCondition`. +- Added `CraftCms\Commerce\Transfer\FieldLayoutElements\TransferManagementField`. +- Added `CraftCms\Commerce\Transfer\Transfers`. +- Added `CraftCms\Commerce\Support\Facades\Transfers`. +- Added `CraftCms\Commerce\Transfer\Data\TransferDetail`. +- Added `CraftCms\Commerce\Transfer\Models\Transfer`. +- Added `CraftCms\Commerce\Transfer\Models\TransferDetail`. +- Added `CraftCms\Commerce\Transfer\Enums\TransferStatusType` enum. +- Added `CraftCms\Commerce\Transfer\Policies\TransferPolicy`, registered via `Gate::policy()`, which lets users with the “Manage inventory transfers” permission view and save transfers and delete draft transfers. +- Added `CraftCms\Commerce\Transfer\Transfers::markAsPending()` and `receive()`. +- Added `CraftCms\Commerce\Transfer\Elements\Transfer::canBeReceived()`. +- Added `CraftCms\Commerce\Ui\Controls\TransferDetails` and `CraftCms\Commerce\Ui\Controls\TransferReceive` form controls. +- Added `CraftCms\Commerce\Http\ViewModels\TransferIndexViewModel` and `CraftCms\Commerce\Http\ViewModels\TransferEditViewModel`. +- The transfers index and edit screens are now Inertia pages built on core's element index and element editor. +- Transfers are now saved through core's `elements/save` action. `TransferManagementField` now provides origin, destination and item form controls, and changing the origin refreshes the items that can be transferred. +- Receiving a transfer now happens in a “Receive Inventory” modal opened from the transfer's action menu. +- Deprecated `craft\commerce\elements\Transfer`. `CraftCms\Commerce\Transfer\Elements\Transfer` should be used instead. +- Deprecated `craft\commerce\elements\db\TransferQuery`. `CraftCms\Commerce\Transfer\Queries\TransferQuery` should be used instead. +- Deprecated `craft\commerce\elements\conditions\transfers\TransferCondition`. `CraftCms\Commerce\Transfer\Conditions\TransferCondition` should be used instead. +- Deprecated `craft\commerce\fieldlayoutelements\TransferManagementField`. `CraftCms\Commerce\Transfer\FieldLayoutElements\TransferManagementField` should be used instead. +- Deprecated `craft\commerce\services\Transfers`. `CraftCms\Commerce\Transfer\Transfers` should be used instead. +- Deprecated `craft\commerce\models\TransferDetail`. `CraftCms\Commerce\Transfer\Data\TransferDetail` should be used instead. +- Deprecated `craft\commerce\enums\TransferStatusType`. `CraftCms\Commerce\Transfer\Enums\TransferStatusType` should be used instead. +- Removed `craft\commerce\records\Transfer`. `CraftCms\Commerce\Transfer\Models\Transfer` should be used instead. +- Removed `craft\commerce\records\TransferDetail`. `CraftCms\Commerce\Transfer\Models\TransferDetail` should be used instead. +- Removed `craft\commerce\web\assets\transfers\TransfersAsset` as it was unused. + +#### Controllers + +- Removed `craft\commerce\controllers\TransfersController`. `CraftCms\Commerce\Http\Controllers\TransfersController` should be used instead. +- Added `CraftCms\Commerce\Http\Controllers\EditTransferController`, rendering the transfer edit screen. +- Added the `commerce/transfers/prepare-receive-modal` action, returning the “Receive Inventory” modal's form. +- The `commerce/transfers/receive-transfer` action now returns JSON for the “Receive Inventory” modal and requires permission to save the transfer. +- Removed the `commerce/transfers/render-management` and `commerce/transfers/receive-transfer-screen` actions. +- Removed the `commerce/transfers/save-settings` action. `commerce/settings/save-transfer-settings` should be used instead. + +### Users + +- Removed `craft\commerce\controllers\UsersController`. `CraftCms\Commerce\Http\Controllers\Users\UsersController` should be used instead. +- The Commerce tab on the Edit User screen is now built from `CraftCms\Cms\Http\Controllers\Users\EditUserTrait`; Commerce listens for `CraftCms\Cms\User\Events\EditUserScreensResolving` instead of the removed `craft\controllers\UsersController::EVENT_DEFINE_EDIT_SCREENS`. + +### Extensibility + +- Added `CraftCms\Commerce\Plugin`. `craft\commerce\Plugin` now extends this class instead of `craft\base\Plugin`. +- Added `Plugin::getPermissions()`, exposing Commerce's permissions as `CraftCms\Cms\User\Data\Permission` objects, including a dynamic `commerce-viewProductType:{uid}` permission (with nested create/save/delete permissions) per product type. +- Added `Plugin::getCpNavItem()`, building the Commerce CP nav item and its permission-gated subnav via `CraftCms\Cms\Cp\Data\NavItem` instead of the legacy array-based `getCpNavItem()` override. +- Added `CraftCms\Commerce\Console\Commands\Resave\ResaveProductsCommand`, `ResaveVariantsCommand`, `ResaveOrdersCommand`, and `ResaveCartsCommand`, registered as `craft:resave:products`, `craft:resave:variants`, `craft:resave:orders`, and `craft:resave:carts` (also picked up automatically by `craft:resave:all`). +- Added `CraftCms\Commerce\Support\ObjectState`, a `WeakMap`-backed per-instance state store used by the `Site`/`User`/`Address` `Macroable` macros above. +- Added GraphQL schema component and eager-loadable field registration via `CraftCms\Cms\Gql\Events\GqlSchemaComponentsResolving` and `GqlEagerLoadableFieldsResolving`. +- Added garbage collection registration via `CraftCms\Cms\GarbageCollection\Events\RunningGarbageCollection`, purging incomplete carts, orphaned variants, and partial Donation/Order/Product/Variant/Transfer elements. +- Added `craft.commerce`, `craft.orders`, `craft.products`, and `craft.variants` Twig variables via `CraftCms\Cms\Twig\Variables\CraftVariable::macro()`. +- Added `Plugin::getDonation()`, reachable in Twig as `craft.commerce.getDonation()`, matching the legacy `craft\commerce\plugin\Variables::getDonation()` trait method. +- The `commerce/products//` and `commerce/variants/` element-edit screens, previously Craft core's generic `elements/edit` action registered via a legacy `UrlManager` rule, are now registered directly in `routes/cp.php` against `CraftCms\Cms\Http\Controllers\Elements\EditElementController`. `commerce/inventory/transfers/` is registered against `CraftCms\Commerce\Http\Controllers\EditTransferController`. +- Registered Commerce's Twig extension via the `CraftCms\Cms\Support\Facades\Twig` facade. +- Added `CraftCms\Commerce\Order\Elements\Order::defineExporters()`, registering `CraftCms\Commerce\Order\Exporters\OrderExport` and `LineItemExport`. +- Added `CraftCms\Commerce\Base\Zone`. +- Added `CraftCms\Commerce\Base\ZoneInterface`. +- Added `CraftCms\Commerce\Database\Table`. +- Added `CraftCms\Commerce\Settings`. +- Added `CraftCms\Commerce\Exceptions\NotImplementedException`. +- Added `CraftCms\Commerce\Events\UpgradeEvent`. +- Added `CraftCms\Commerce\Twig\Extension`, replacing `craft\commerce\web\twig\Extension`. Registers the same `commerceCurrency`/`commercePaymentFormNamespace` filters and a `currentStore` global, now sourced from `CraftCms\Cms\Support\Facades\Sites::getCurrentSite()->getStore()` (the `Site::macro('getStore', ...)` registered in `Plugin::registerBehaviorMacros()`) instead of the removed `StoreBehavior`. +- Removed `craft\commerce\web\twig\CraftVariableBehavior` as it was unused under Craft 6 — the `craft.commerce`/`craft.orders`/`craft.products`/`craft.variants` Twig variables are already served by `NewCraftVariable::macro(...)` registrations in `Plugin::registerVariableMacros()`. +- Deprecated `craft\commerce\base\Zone`. `CraftCms\Commerce\Base\Zone` should be used instead. +- Deprecated `craft\commerce\base\ZoneInterface`. `CraftCms\Commerce\Base\ZoneInterface` should be used instead. +- Deprecated `craft\commerce\db\Table`. `CraftCms\Commerce\Database\Table` should be used instead. +- Deprecated `craft\commerce\models\Settings`. `CraftCms\Commerce\Settings` should be used instead. +- Deprecated `craft\commerce\errors\NotImplementedException`. `CraftCms\Commerce\Exceptions\NotImplementedException` should be used instead. +- Deprecated `craft\commerce\events\UpgradeEvent`. `CraftCms\Commerce\Events\UpgradeEvent` should be used instead. +- Deprecated `craft\commerce\events\*`. Cancelable Commerce events (previously extending `craft\events\CancelableEvent`) now use the `CraftCms\Cms\Shared\Concerns\ValidatableEvent` trait instead. +- Removed `craft\commerce\web\twig\Extension`. `CraftCms\Commerce\Twig\Extension` should be used instead. +- Removed `craft\commerce\models\Settings::VIEW_URI_CUSTOMERS`, `VIEW_URI_PROMOTIONS`, `VIEW_URI_SHIPPING`, and `VIEW_URI_TAX` constants. +- Improved `craft\commerce\Plugin`'s `Plugin::getInstance()->getX()` service getters to be backed by a lazy-instantiate-and-cache trait rather than Yii2's component locator. + +### Translations + +- Moved `src-yii2/translations/` to a top-level `lang/` directory (e.g. `lang/en/commerce.php`, `lang/de/commerce.php`), matching the Laravel convention `CraftCms\Cms\Plugin\Concerns\HasTranslations` looks for (`dirname($plugin->getBasePath()).'/lang'`) ahead of the legacy `src/translations` fallback. Message file structure and content are unchanged. +- Updated `crowdin.yml`'s `base_path` from `/src/translations` to `/lang` to match. + +### Testing + +- Deprecated `craft\commerce\elements\VariantCollection`. Use `CraftCms\Commerce\Product\Variant\Elements\VariantCollection` instead. +- Deprecated `craft\commerce\elements\deletionblockers\OrderCustomersDeletionBlocker`. Use `CraftCms\Commerce\Order\DeletionBlockers\OrderCustomersDeletionBlocker` instead. \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 53d6661684..a612fce0e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,8 +11,8 @@ ## 5.7.3 - 2026-09-02 -- Fixed a bug where `craft\commerce\elements\Order::setShippingAddress()` and `setBillingAddress()` weren’t setting custom field values. ([#4353](https://github.com/craftcms/commerce/issues/4353)) -- Fixed a bug where variants’ auto-generated SKUs would be incorrect if the SKU Format contained `{id}`. +- Fixed a bug where `craft\commerce\elements\Order::setShippingAddress()` and `setBillingAddress()` weren't setting custom field values. ([#4353](https://github.com/craftcms/commerce/issues/4353)) +- Fixed a bug where variants' auto-generated SKUs would be incorrect if the SKU Format contained `{id}`. - Fixed a bug where adding a new site via project config apply could cause additional project config changes. ([#4348](https://github.com/craftcms/commerce/issues/4348)) - Fixed a deprecation warning that was getting logged when accessing `/admin/commerce`. ([#4349](https://github.com/craftcms/commerce/issues/4349)) diff --git a/README.md b/README.md index 9b60b28a16..611a7b27db 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,28 @@ php craft plugin/install commerce php craft commerce/example-templates ``` +## Development workbench + +The [Orchestra Workbench](https://packages.tools/workbench) runs Commerce inside a local Craft app. It keeps its SQLite database, environment, project config, and runtime files under `workbench/`. + +```bash +composer install +pnpm install +pnpm build +composer workbench:setup +composer serve +``` + +The current CMS feature branch needs frontend assets built from the same CMS checkout. Build that checkout's frontend, set `WORKBENCH_CMS_ASSETS_PATH` in `workbench/.env` to its absolute `cms-assets/resources` path, and rerun `composer workbench:setup`. This overrides the published CMS assets during setup. + +Open to sign in automatically as the seeded admin and open the control panel. To test manual login, visit `/admin/login` and use `admin` / `craftcms2018!!`. + +`workbench:setup` creates `workbench/.env` with a random app key, installs Craft and Commerce, and publishes their assets. You can run it again without resetting the database. Edit `workbench/.env` before the first setup to change the site URL or admin credentials. + +Run `pnpm dev` in a second terminal for Commerce component updates. After rebuilding with `pnpm build`, run `composer workbench:setup` again to publish the updated assets. + +To reset the local site, stop the server, delete `workbench/database/database.sqlite*` and `workbench/config/craft/project`, then run `composer workbench:setup`. + ## Resources We highly recommend you check out these resources as you’re getting started with Craft Commerce: diff --git a/codeception.yml b/codeception.yml deleted file mode 100644 index bf3ef1f863..0000000000 --- a/codeception.yml +++ /dev/null @@ -1,46 +0,0 @@ -actor: Tester -paths: - tests: tests - log: tests/_output - output: tests/_output - data: tests/_data - support: tests/_support - envs: tests/_envs -bootstrap: _bootstrap.php -coverage: - enabled: true - include: - - src/* - exclude: - - src/etc/* - - src/migrations/* - - src/templates/* - - src/translations/* - - src/web/assets/* - - docs/* - - templates/* - - tests/* - - vendor/* -params: - - env - - tests/.env -modules: - config: - \craft\test\Craft: - configFile: 'tests/_craft/config/test.php' - entryUrl: 'http://test.craftcms.test/index.php' - projectConfig: {} - migrations: [] - plugins: - commerce: - class: '\craft\commerce\Plugin' - handle: commerce - cleanup: true - transaction: true - dbSetup: {clean: true, setupCraft: true} - fullMock: false -groups: - elements: [tests/unit/elements] - models: [tests/unit/models] - services: [tests/unit/services] - gql: [tests/unit/gql] diff --git a/composer.json b/composer.json index a1b36c7b01..d418ee952c 100644 --- a/composer.json +++ b/composer.json @@ -21,34 +21,41 @@ "minimum-stability": "dev", "prefer-stable": true, "require": { - "php": "^8.2", - "craftcms/cms": "^5.10.0", - "dompdf/dompdf": "^2.0.2 || ^3.0", + "craftcms/cms": "6.x-dev", + "craftcms/cms-assets": "6.x-dev", + "dompdf/dompdf": "^3.1.6", "ibericode/vat": "^2.0", "iio/libmergepdf": "^4.0", - "moneyphp/money": "^4.2.0" + "moneyphp/money": "^4.2.0", + "php": "^8.5" }, "require-dev": { - "codeception/codeception": "^5.0.11", - "codeception/module-asserts": "^3.0.0", - "codeception/module-datafactory": "^3.0.0", - "codeception/module-phpbrowser": "^3.0.0", - "codeception/module-rest": "^3.3.2", - "codeception/module-yii2": "^1.1.9", - "craftcms/ckeditor": "^4.0.0", - "craftcms/redactor": "*", "craftcms/ecs": "dev-main", - "craftcms/phpstan": "dev-main", + "craftcms/yii2-adapter": "6.x-dev", + "dg/bypass-finals": "^1.9", "fakerphp/faker": "^1.19.0", + "larastan/larastan": "^3.4", "league/factory-muffin": "^3.3.0", - "phpstan/phpstan": "^1.10.56", - "vlucas/phpdotenv": "^5.4.1", - "craftcms/rector": "dev-main" + "orchestra/testbench": "^11.0", + "pestphp/pest": "^4.0", + "pestphp/pest-plugin-arch": "^4.0", + "pestphp/pest-plugin-laravel": "^4.0", + "phpstan/phpstan": "^2.1", + "rector/rector": "^2.0", + "vlucas/phpdotenv": "^5.4.1" }, "autoload": { "psr-4": { - "craft\\commerce\\": "src/", - "craftcommercetests\\fixtures\\": "tests/fixtures/" + "craft\\commerce\\": "src-yii2/", + "CraftCms\\Commerce\\": "src/", + "craftcommercetests\\fixtures\\": "tests-yii2/fixtures/" + } + }, + "autoload-dev": { + "psr-4": { + "CraftCms\\Commerce\\Tests\\": "tests/", + "Workbench\\App\\": "workbench/app/", + "Workbench\\Database\\Seeders\\": "workbench/database/seeders/" } }, "extra": { @@ -56,22 +63,89 @@ "name": "Craft Commerce", "description": "Create beautifully bespoke ecommerce experiences", "developer": "Pixel & Tonic", - "documentationUrl": "https://craftcms.com/docs/commerce/4.x/" + "documentationUrl": "https://craftcms.com/docs/commerce/4.x/", + "laravel": { + "aliases": { + "AdjusterTypes": "CraftCms\\Commerce\\Support\\Facades\\AdjusterTypes", + "Carts": "CraftCms\\Commerce\\Support\\Facades\\Carts", + "CatalogPricing": "CraftCms\\Commerce\\Support\\Facades\\CatalogPricing", + "CatalogPricingRules": "CraftCms\\Commerce\\Support\\Facades\\CatalogPricingRules", + "Coupons": "CraftCms\\Commerce\\Support\\Facades\\Coupons", + "Currencies": "CraftCms\\Commerce\\Support\\Facades\\Currencies", + "Customers": "CraftCms\\Commerce\\Support\\Facades\\Customers", + "DiscountAdjusterTypes": "CraftCms\\Commerce\\Support\\Facades\\DiscountAdjusterTypes", + "Discounts": "CraftCms\\Commerce\\Support\\Facades\\Discounts", + "Emails": "CraftCms\\Commerce\\Support\\Facades\\Emails", + "Formulas": "CraftCms\\Commerce\\Support\\Facades\\Formulas", + "GatewayTypes": "CraftCms\\Commerce\\Support\\Facades\\GatewayTypes", + "Gateways": "CraftCms\\Commerce\\Support\\Facades\\Gateways", + "Inventory": "CraftCms\\Commerce\\Support\\Facades\\Inventory", + "InventoryLocations": "CraftCms\\Commerce\\Support\\Facades\\InventoryLocations", + "LineItemStatuses": "CraftCms\\Commerce\\Support\\Facades\\LineItemStatuses", + "LineItems": "CraftCms\\Commerce\\Support\\Facades\\LineItems", + "OrderAdjustments": "CraftCms\\Commerce\\Support\\Facades\\OrderAdjustments", + "OrderHistories": "CraftCms\\Commerce\\Support\\Facades\\OrderHistories", + "OrderNotices": "CraftCms\\Commerce\\Support\\Facades\\OrderNotices", + "OrderStatuses": "CraftCms\\Commerce\\Support\\Facades\\OrderStatuses", + "Orders": "CraftCms\\Commerce\\Support\\Facades\\Orders", + "PaymentCurrencies": "CraftCms\\Commerce\\Support\\Facades\\PaymentCurrencies", + "PaymentSources": "CraftCms\\Commerce\\Support\\Facades\\PaymentSources", + "Payments": "CraftCms\\Commerce\\Support\\Facades\\Payments", + "Pdfs": "CraftCms\\Commerce\\Support\\Facades\\Pdfs", + "ProductTypes": "CraftCms\\Commerce\\Support\\Facades\\ProductTypes", + "Products": "CraftCms\\Commerce\\Support\\Facades\\Products", + "PurchasableTypes": "CraftCms\\Commerce\\Support\\Facades\\PurchasableTypes", + "Purchasables": "CraftCms\\Commerce\\Support\\Facades\\Purchasables", + "Sales": "CraftCms\\Commerce\\Support\\Facades\\Sales", + "ShippingCategories": "CraftCms\\Commerce\\Support\\Facades\\ShippingCategories", + "ShippingMethods": "CraftCms\\Commerce\\Support\\Facades\\ShippingMethods", + "ShippingRuleCategories": "CraftCms\\Commerce\\Support\\Facades\\ShippingRuleCategories", + "ShippingRules": "CraftCms\\Commerce\\Support\\Facades\\ShippingRules", + "ShippingZones": "CraftCms\\Commerce\\Support\\Facades\\ShippingZones", + "StoreSettings": "CraftCms\\Commerce\\Support\\Facades\\StoreSettings", + "Stores": "CraftCms\\Commerce\\Support\\Facades\\Stores", + "TaxCategories": "CraftCms\\Commerce\\Support\\Facades\\TaxCategories", + "TaxRates": "CraftCms\\Commerce\\Support\\Facades\\TaxRates", + "TaxZones": "CraftCms\\Commerce\\Support\\Facades\\TaxZones", + "Taxes": "CraftCms\\Commerce\\Support\\Facades\\Taxes", + "Transactions": "CraftCms\\Commerce\\Support\\Facades\\Transactions", + "Transfers": "CraftCms\\Commerce\\Support\\Facades\\Transfers", + "Variants": "CraftCms\\Commerce\\Support\\Facades\\Variants", + "Vat": "CraftCms\\Commerce\\Support\\Facades\\Vat", + "Webhooks": "CraftCms\\Commerce\\Support\\Facades\\Webhooks" + } + } }, "scripts": { "check-cs": "ecs check --ansi", "fix-cs": "ecs check --ansi --fix", "phpstan": "phpstan --memory-limit=1G", - "testunit": [ + "tests": [ + "Composer\\Config::disableProcessTimeout", + "./vendor/bin/pest --compact" + ], + "post-autoload-dump": [ + "@prepare" + ], + "prepare": [ + "@php workbench/prepare.php", + "@php vendor/bin/testbench package:discover --ansi" + ], + "workbench:setup": [ + "@php workbench/prepare.php", + "@php vendor/bin/testbench workbench:build --no-interaction" + ], + "serve": [ "Composer\\Config::disableProcessTimeout", - "codecept run unit" + "@php vendor/bin/testbench serve --host=127.0.0.1 --port=8125" ] }, "config": { "sort-packages": true, "allow-plugins": { "yiisoft/yii2-composer": true, - "craftcms/plugin-installer": true + "craftcms/plugin-installer": true, + "pestphp/pest-plugin": true } } } diff --git a/composer.local.json b/composer.local.json new file mode 100644 index 0000000000..c9e2f2a11f --- /dev/null +++ b/composer.local.json @@ -0,0 +1,172 @@ +{ + "name": "craftcms/commerce", + "description": "Craft Commerce", + "type": "craft-plugin", + "keywords": [ + "cms", + "craftcms", + "commerce", + "yii2" + ], + "homepage": "https://craftcms.com/commerce", + "license": "proprietary", + "support": { + "email": "support@craftcms.com", + "issues": "https://github.com/craftcms/commerce/issues?state=open", + "forum": "https://craftcms.stackexchange.com/", + "source": "https://github.com/craftcms/commerce", + "docs": "https://craftcms.com/docs/commerce/4.x/", + "rss": "https://github.com/craftcms/commerce/releases.atom" + }, + "minimum-stability": "dev", + "prefer-stable": true, + "require": { + "php": "^8.5", + "craftcms/cms": "6.x-dev", + "dompdf/dompdf": "^3.1.6", + "ibericode/vat": "^2.0", + "iio/libmergepdf": "^4.0", + "moneyphp/money": "^4.2.0", + "craftcms/cms-assets": "6.x-dev" + }, + "require-dev": { + "craftcms/ecs": "dev-main", + "craftcms/yii2-adapter": "6.x-dev", + "dg/bypass-finals": "^1.9", + "fakerphp/faker": "^1.19.0", + "larastan/larastan": "^3.4", + "league/factory-muffin": "^3.3.0", + "orchestra/testbench": "^11.0", + "pestphp/pest": "^4.0", + "pestphp/pest-plugin-arch": "^4.0", + "pestphp/pest-plugin-laravel": "^4.0", + "phpstan/phpstan": "^2.1", + "rector/rector": "^2.0", + "vlucas/phpdotenv": "^5.4.1" + }, + "autoload": { + "psr-4": { + "craft\\commerce\\": "src-yii2/", + "CraftCms\\Commerce\\": "src/", + "craftcommercetests\\fixtures\\": "tests-yii2/fixtures/" + } + }, + "autoload-dev": { + "psr-4": { + "CraftCms\\Commerce\\Tests\\": "tests/" + } + }, + "extra": { + "handle": "commerce", + "name": "Craft Commerce", + "description": "Create beautifully bespoke ecommerce experiences", + "developer": "Pixel & Tonic", + "documentationUrl": "https://craftcms.com/docs/commerce/4.x/", + "laravel": { + "aliases": { + "AdjusterTypes": "CraftCms\\Commerce\\Support\\Facades\\AdjusterTypes", + "Carts": "CraftCms\\Commerce\\Support\\Facades\\Carts", + "CatalogPricing": "CraftCms\\Commerce\\Support\\Facades\\CatalogPricing", + "CatalogPricingRules": "CraftCms\\Commerce\\Support\\Facades\\CatalogPricingRules", + "Coupons": "CraftCms\\Commerce\\Support\\Facades\\Coupons", + "Currencies": "CraftCms\\Commerce\\Support\\Facades\\Currencies", + "Customers": "CraftCms\\Commerce\\Support\\Facades\\Customers", + "DiscountAdjusterTypes": "CraftCms\\Commerce\\Support\\Facades\\DiscountAdjusterTypes", + "Discounts": "CraftCms\\Commerce\\Support\\Facades\\Discounts", + "Emails": "CraftCms\\Commerce\\Support\\Facades\\Emails", + "Formulas": "CraftCms\\Commerce\\Support\\Facades\\Formulas", + "GatewayTypes": "CraftCms\\Commerce\\Support\\Facades\\GatewayTypes", + "Gateways": "CraftCms\\Commerce\\Support\\Facades\\Gateways", + "Inventory": "CraftCms\\Commerce\\Support\\Facades\\Inventory", + "InventoryLocations": "CraftCms\\Commerce\\Support\\Facades\\InventoryLocations", + "LineItemStatuses": "CraftCms\\Commerce\\Support\\Facades\\LineItemStatuses", + "LineItems": "CraftCms\\Commerce\\Support\\Facades\\LineItems", + "OrderAdjustments": "CraftCms\\Commerce\\Support\\Facades\\OrderAdjustments", + "OrderHistories": "CraftCms\\Commerce\\Support\\Facades\\OrderHistories", + "OrderNotices": "CraftCms\\Commerce\\Support\\Facades\\OrderNotices", + "OrderStatuses": "CraftCms\\Commerce\\Support\\Facades\\OrderStatuses", + "Orders": "CraftCms\\Commerce\\Support\\Facades\\Orders", + "PaymentCurrencies": "CraftCms\\Commerce\\Support\\Facades\\PaymentCurrencies", + "PaymentSources": "CraftCms\\Commerce\\Support\\Facades\\PaymentSources", + "Payments": "CraftCms\\Commerce\\Support\\Facades\\Payments", + "Pdfs": "CraftCms\\Commerce\\Support\\Facades\\Pdfs", + "ProductTypes": "CraftCms\\Commerce\\Support\\Facades\\ProductTypes", + "Products": "CraftCms\\Commerce\\Support\\Facades\\Products", + "PurchasableTypes": "CraftCms\\Commerce\\Support\\Facades\\PurchasableTypes", + "Purchasables": "CraftCms\\Commerce\\Support\\Facades\\Purchasables", + "Sales": "CraftCms\\Commerce\\Support\\Facades\\Sales", + "ShippingCategories": "CraftCms\\Commerce\\Support\\Facades\\ShippingCategories", + "ShippingMethods": "CraftCms\\Commerce\\Support\\Facades\\ShippingMethods", + "ShippingRuleCategories": "CraftCms\\Commerce\\Support\\Facades\\ShippingRuleCategories", + "ShippingRules": "CraftCms\\Commerce\\Support\\Facades\\ShippingRules", + "ShippingZones": "CraftCms\\Commerce\\Support\\Facades\\ShippingZones", + "StoreSettings": "CraftCms\\Commerce\\Support\\Facades\\StoreSettings", + "Stores": "CraftCms\\Commerce\\Support\\Facades\\Stores", + "TaxCategories": "CraftCms\\Commerce\\Support\\Facades\\TaxCategories", + "TaxRates": "CraftCms\\Commerce\\Support\\Facades\\TaxRates", + "TaxZones": "CraftCms\\Commerce\\Support\\Facades\\TaxZones", + "Taxes": "CraftCms\\Commerce\\Support\\Facades\\Taxes", + "Transactions": "CraftCms\\Commerce\\Support\\Facades\\Transactions", + "Transfers": "CraftCms\\Commerce\\Support\\Facades\\Transfers", + "Variants": "CraftCms\\Commerce\\Support\\Facades\\Variants", + "Vat": "CraftCms\\Commerce\\Support\\Facades\\Vat", + "Webhooks": "CraftCms\\Commerce\\Support\\Facades\\Webhooks" + } + } + }, + "scripts": { + "check-cs": "ecs check --ansi", + "fix-cs": "ecs check --ansi --fix", + "phpstan": "phpstan --memory-limit=1G", + "tests": [ + "Composer\\Config::disableProcessTimeout", + "./vendor/bin/pest --compact" + ], + "post-autoload-dump": [ + "@clear", + "@prepare" + ], + "clear": "@php vendor/bin/testbench package:purge-skeleton --ansi", + "prepare": "@php vendor/bin/testbench package:discover --ansi" + }, + "config": { + "sort-packages": true, + "allow-plugins": { + "yiisoft/yii2-composer": true, + "craftcms/plugin-installer": true, + "pestphp/pest-plugin": true + } + }, + "repositories": [ + { + "type": "path", + "url": "/tmp/packages/cms-6", + "options": { + "symlink": true, + "versions": { + "craftcms/cms": "6.x-dev" + } + } + }, + { + "type": "path", + "url": "/tmp/packages/cms-6/cms-assets", + "options": { + "symlink": true, + "versions": { + "craftcms/cms-assets": "6.x-dev" + } + } + }, + { + "type": "path", + "url": "/tmp/packages/cms-6/yii2-adapter", + "options": { + "symlink": true, + "versions": { + "craftcms/yii2-adapter": "6.x-dev" + } + } + } + ] +} \ No newline at end of file diff --git a/composer.local.lock b/composer.local.lock new file mode 100644 index 0000000000..8a4b647066 --- /dev/null +++ b/composer.local.lock @@ -0,0 +1,16011 @@ +{ + "_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": "17c65c71cbabd8480d1dd099ec04acf3", + "packages": [ + { + "name": "bacon/bacon-qr-code", + "version": "v3.1.1", + "source": { + "type": "git", + "url": "https://github.com/Bacon/BaconQrCode.git", + "reference": "4da2233e72eeecd9be3b62e0dc2cc9ed8e2e31c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/4da2233e72eeecd9be3b62e0dc2cc9ed8e2e31c2", + "reference": "4da2233e72eeecd9be3b62e0dc2cc9ed8e2e31c2", + "shasum": "" + }, + "require": { + "dasprid/enum": "^1.0.3", + "ext-iconv": "*", + "php": "^8.1" + }, + "require-dev": { + "phly/keep-a-changelog": "^2.12", + "phpunit/phpunit": "^10.5.11 || ^11.0.4", + "spatie/phpunit-snapshot-assertions": "^5.1.5", + "spatie/pixelmatch-php": "^1.2.0", + "squizlabs/php_codesniffer": "^3.9" + }, + "suggest": { + "ext-imagick": "to generate QR code images" + }, + "type": "library", + "autoload": { + "psr-4": { + "BaconQrCode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" + } + ], + "description": "BaconQrCode is a QR code generator for PHP.", + "homepage": "https://github.com/Bacon/BaconQrCode", + "support": { + "issues": "https://github.com/Bacon/BaconQrCode/issues", + "source": "https://github.com/Bacon/BaconQrCode/tree/v3.1.1" + }, + "time": "2026-04-05T21:06:35+00:00" + }, + { + "name": "brick/math", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "2effe05d2177c451b86c6a073196a4034c02f211" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/2effe05d2177c451b86c6a073196a4034c02f211", + "reference": "2effe05d2177c451b86c6a073196a4034c02f211", + "shasum": "" + }, + "require": { + "php": "^8.2" + }, + "require-dev": { + "phpstan/phpstan": "2.2.13", + "phpstan/phpstan-phpunit": "2.0.18", + "phpunit/phpunit": "^11.5" + }, + "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", + "bignumber", + "brick", + "decimal", + "integer", + "math", + "mathematics", + "rational" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/1.0.0" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2026-09-12T10:28:18+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc", + "reference": "5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2026-09-06T14:11:38+00:00" + }, + { + "name": "commerceguys/addressing", + "version": "v2.3.1", + "source": { + "type": "git", + "url": "https://github.com/commerceguys/addressing.git", + "reference": "504ed1765d7a6788830c197390879d677f54d868" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/commerceguys/addressing/zipball/504ed1765d7a6788830c197390879d677f54d868", + "reference": "504ed1765d7a6788830c197390879d677f54d868", + "shasum": "" + }, + "require": { + "doctrine/collections": "^1.6 || ^2.0 || ^3.0", + "php": ">=8.0" + }, + "require-dev": { + "ext-json": "*", + "mikey179/vfsstream": "^1.6.11", + "phpunit/phpunit": "^9.6", + "squizlabs/php_codesniffer": "^3.7", + "symfony/validator": "^5.4 || ^6.3 || ^7.0 || ^8.0" + }, + "suggest": { + "symfony/validator": "to validate addresses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "CommerceGuys\\Addressing\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Zivanovic" + }, + { + "name": "Damien Tournoud" + } + ], + "description": "Addressing library powered by CLDR and Google's address data.", + "keywords": [ + "address", + "internationalization", + "localization", + "postal" + ], + "support": { + "issues": "https://github.com/commerceguys/addressing/issues", + "source": "https://github.com/commerceguys/addressing/tree/v2.3.1" + }, + "time": "2026-08-23T14:17:54+00:00" + }, + { + "name": "composer/pcre", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "d5a341b3fb61f3001970940afb1d332968a183ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/d5a341b3fb61f3001970940afb1d332968a183ed", + "reference": "d5a341b3fb61f3001970940afb1d332968a183ed", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<2.2.2" + }, + "require-dev": { + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^9" + }, + "type": "library", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "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.4.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + } + ], + "time": "2026-06-07T11:47:49+00:00" + }, + { + "name": "composer/semver", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "f7a296f4c4cf8cb8bb83e35d6951a406bb11afa5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/f7a296f4c4cf8cb8bb83e35d6951a406bb11afa5", + "reference": "f7a296f4c4cf8cb8bb83e35d6951a406bb11afa5", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" + }, + "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": "Version comparison library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.5.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + } + ], + "time": "2026-09-24T14:38:51+00:00" + }, + { + "name": "craftcms/cms", + "version": "6.x-dev", + "dist": { + "type": "path", + "url": "/tmp/packages/cms-6", + "reference": "f2ed3c8c66f10374e6d791b2cdc3219b1132fa1f" + }, + "require": { + "bacon/bacon-qr-code": "^3.0", + "commerceguys/addressing": "^2.1.1", + "composer/semver": "^3.3.2", + "craftcms/cms-assets": "self.version", + "craftcms/laravel-aliases": "^2.0", + "craftcms/laravel-dependency-aware-cache": "^1.2.3", + "craftcms/laravel-ruleset-validation": "^1.1", + "craftcms/plugin-installer": "~1.6.0", + "craftcms/server-check": "~6.0.0", + "craftcms/url-validator": "^1.0", + "elvanto/litemoji": "^5.2.0", + "enshrined/svg-sanitize": "^1.0.0", + "ext-bcmath": "*", + "ext-curl": "*", + "ext-dom": "*", + "ext-intl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-pcre": "*", + "ext-pdo": "*", + "ext-zip": "*", + "guzzlehttp/guzzle": "^7.2.0", + "inertiajs/inertia-laravel": "^3.0", + "intervention/image": "^4.2", + "laravel/framework": "^13.17", + "laravel/wayfinder": "^0.1.12", + "league/commonmark": "^2.8", + "league/flysystem-path-prefixing": "^3.31", + "league/uri": "^7.0", + "moneyphp/money": "^4.0", + "php": "^8.5", + "phpoffice/phpspreadsheet": "^5.3", + "pragmarx/google2fa": "^9.0", + "pragmarx/recovery": "^0.2.1", + "symfony/css-selector": "^7.0|^8.0", + "symfony/dom-crawler": "^7.0|^8.0", + "symfony/filesystem": "^7.0|^8.0", + "symfony/html-sanitizer": "^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/yaml": "^7.0|^8.0", + "theiconic/name-parser": "^1.2", + "tpetry/laravel-query-expressions": "^1.5", + "twig/twig": "~3.30.0", + "voku/portable-ascii": "^2.0", + "web-auth/webauthn-lib": "~5.3.9", + "webonyx/graphql-php": "~15.33.1", + "yiisoft/arrays": "^3.2", + "yiisoft/html": "^4.1", + "yiisoft/translator": "^3.2", + "yiisoft/translator-message-php": "^1.1" + }, + "require-dev": { + "barryvdh/laravel-debugbar": "^4.2", + "craftcms/test-plugin": "1.0.1", + "dg/bypass-finals": "^1.9", + "driftingly/rector-laravel": "^2.1", + "fakerphp/faker": "^1.19.0", + "intervention/image-driver-vips": "^4.1", + "larastan/larastan": "^3.12", + "laravel/boost": "^2.6", + "laravel/pao": "^1.0", + "laravel/pint": "^1.22", + "laravel/socialite": "^5.23", + "league/flysystem-aws-s3-v3": "^3.35", + "orchestra/testbench": "^11.0", + "pestphp/pest": "^5.0", + "pestphp/pest-plugin-agent": "^5.0", + "pestphp/pest-plugin-arch": "^5.0", + "pestphp/pest-plugin-laravel": "^5.0", + "phpstan/phpstan": "^2.1", + "rector/rector": "^2.3", + "spatie/laravel-typescript-transformer": "^3.2" + }, + "suggest": { + "ext-exif": "Adds support for parsing image EXIF data.", + "ext-iconv": "Adds support for more character encodings than PHP’s built-in mb_convert_encoding() function, which Craft will take advantage of when converting strings to UTF-8.", + "ext-imagick": "Adds support for more image processing formats and options.", + "intervention/image-driver-vips": "Adds support for image processing with libvips (requires ext-ffi and libvips).", + "laravel/socialite": "Adds OAuth login support for providers configured with `GeneralConfig::oauthProviders()`." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "CraftCms\\Cms\\Providers\\CraftServiceProvider" + ], + "aliases": { + "Activities": "CraftCms\\Cms\\Support\\Facades\\Activities", + "Addresses": "CraftCms\\Cms\\Support\\Facades\\Addresses", + "AssetIndexer": "CraftCms\\Cms\\Support\\Facades\\AssetIndexer", + "Assets": "CraftCms\\Cms\\Support\\Facades\\Assets", + "AuthMethods": "CraftCms\\Cms\\Support\\Facades\\AuthMethods", + "BulkOps": "CraftCms\\Cms\\Support\\Facades\\BulkOps", + "Conditions": "CraftCms\\Cms\\Support\\Facades\\Conditions", + "DeltaRegistry": "CraftCms\\Cms\\Support\\Facades\\DeltaRegistry", + "Deprecator": "CraftCms\\Cms\\Support\\Facades\\Deprecator", + "Drafts": "CraftCms\\Cms\\Support\\Facades\\Drafts", + "ElementActions": "CraftCms\\Cms\\Support\\Facades\\ElementActions", + "ElementActivity": "CraftCms\\Cms\\Support\\Facades\\ElementActivity", + "ElementCaches": "CraftCms\\Cms\\Support\\Facades\\ElementCaches", + "ElementExporters": "CraftCms\\Cms\\Support\\Facades\\ElementExporters", + "ElementSources": "CraftCms\\Cms\\Support\\Facades\\ElementSources", + "Elements": "CraftCms\\Cms\\Support\\Facades\\Elements", + "Entries": "CraftCms\\Cms\\Support\\Facades\\Entries", + "EntryTypes": "CraftCms\\Cms\\Support\\Facades\\EntryTypes", + "Fields": "CraftCms\\Cms\\Support\\Facades\\Fields", + "Folders": "CraftCms\\Cms\\Support\\Facades\\Folders", + "Gql": "CraftCms\\Cms\\Support\\Facades\\Gql", + "HtmlSanitizers": "CraftCms\\Cms\\Support\\Facades\\HtmlSanitizers", + "HtmlStack": "CraftCms\\Cms\\Support\\Facades\\HtmlStack", + "I18N": "CraftCms\\Cms\\Support\\Facades\\I18N", + "ImageTransforms": "CraftCms\\Cms\\Support\\Facades\\ImageTransforms", + "Images": "CraftCms\\Cms\\Support\\Facades\\Images", + "InputNamespace": "CraftCms\\Cms\\Support\\Facades\\InputNamespace", + "JobProgress": "CraftCms\\Cms\\Support\\Facades\\JobProgress", + "Markdown": "CraftCms\\Cms\\Support\\Facades\\Markdown", + "OAuth": "CraftCms\\Cms\\Support\\Facades\\OAuth", + "Path": "CraftCms\\Cms\\Support\\Facades\\Path", + "Plugins": "CraftCms\\Cms\\Support\\Facades\\Plugins", + "ProjectConfig": "CraftCms\\Cms\\Support\\Facades\\ProjectConfig", + "ResponseHeaders": "CraftCms\\Cms\\Support\\Facades\\ResponseHeaders", + "Revisions": "CraftCms\\Cms\\Support\\Facades\\Revisions", + "Search": "CraftCms\\Cms\\Support\\Facades\\Search", + "Sections": "CraftCms\\Cms\\Support\\Facades\\Sections", + "Security": "CraftCms\\Cms\\Support\\Facades\\Security", + "SiteGroups": "CraftCms\\Cms\\Support\\Facades\\SiteGroups", + "Sites": "CraftCms\\Cms\\Support\\Facades\\Sites", + "Structures": "CraftCms\\Cms\\Support\\Facades\\Structures", + "Template": "CraftCms\\Cms\\Support\\Facades\\Template", + "TemplateHooks": "CraftCms\\Cms\\Support\\Facades\\TemplateHooks", + "Twig": "CraftCms\\Cms\\Support\\Facades\\Twig", + "Updates": "CraftCms\\Cms\\Support\\Facades\\Updates", + "UserGroups": "CraftCms\\Cms\\Support\\Facades\\UserGroups", + "UserPermissions": "CraftCms\\Cms\\Support\\Facades\\UserPermissions", + "Users": "CraftCms\\Cms\\Support\\Facades\\Users", + "Volumes": "CraftCms\\Cms\\Support\\Facades\\Volumes", + "Workflows": "CraftCms\\Cms\\Support\\Facades\\Workflows" + } + } + }, + "autoload": { + "psr-4": { + "CraftCms\\Cms\\": "src/" + }, + "files": [ + "src/helpers.php" + ] + }, + "autoload-dev": { + "psr-4": { + "CraftCms\\Cms\\Tests\\": "tests/", + "CraftCms\\Cms\\Database\\": "database/", + "CraftCms\\Yii2Adapter\\Tests\\": "yii2-adapter/tests-laravel/", + "Workbench\\App\\": "workbench/app/", + "Workbench\\Database\\Factories\\": "workbench/database/factories/", + "Workbench\\Database\\Seeders\\": "workbench/database/seeders/" + } + }, + "scripts": { + "copy-icons": [ + "php ./scripts/copyicons.php" + ], + "fix-cs": [ + "npx concurrently -c 'rector' 'pint src --parallel' './yii2-adapter/vendor/bin/ecs check --config ./yii2-adapter/ecs.php --ansi --fix' --names=rector,pint,ecs" + ], + "phpstan": [ + "phpstan --memory-limit=1G" + ], + "rector": [ + "rector" + ], + "tests": [ + "Composer\\Config::disableProcessTimeout", + "./vendor/bin/pest --parallel --compact" + ], + "tests-adapter": [ + "./yii2-adapter/vendor/bin/pest --configuration ./yii2-adapter/phpunit.xml.dist --test-directory ./tests-laravel" + ], + "post-autoload-dump": [ + "@clear", + "@prepare" + ], + "clear": [ + "@php vendor/bin/testbench package:purge-skeleton --ansi" + ], + "prepare": [ + "@php vendor/bin/testbench package:discover --ansi" + ], + "build": [ + "@php vendor/bin/testbench package:create-sqlite-db --ansi", + "@php vendor/bin/testbench workbench:build --ansi" + ], + "serve": [ + "Composer\\Config::disableProcessTimeout", + "@php vendor/bin/testbench workbench:serve --ansi" + ], + "ci": [ + "@php pint --parallel", + "@rector", + "@phpstan", + "@tests", + "@tests-adapter" + ] + }, + "license": [ + "proprietary" + ], + "authors": [ + { + "name": "Pixel & Tonic", + "homepage": "https://pixelandtonic.com/" + } + ], + "description": "Craft CMS", + "homepage": "https://craftcms.com", + "keywords": [ + "cms", + "craftcms", + "laravel" + ], + "support": { + "email": "support@craftcms.com", + "issues": "https://github.com/craftcms/cms/issues?state=open", + "forum": "https://craftcms.stackexchange.com/", + "source": "https://github.com/craftcms/cms", + "docs": "https://craftcms.com/docs/5.x/", + "rss": "https://github.com/craftcms/cms/releases.atom" + }, + "transport-options": { + "symlink": true, + "relative": false + } + }, + { + "name": "craftcms/cms-assets", + "version": "6.x-dev", + "dist": { + "type": "path", + "url": "/tmp/packages/cms-6/cms-assets", + "reference": "32ca6a5b6558c97d342dcca2b6f18744bde6d08e" + }, + "type": "library", + "license": [ + "proprietary" + ], + "description": "Built assets for Craft CMS.", + "transport-options": { + "symlink": true, + "relative": false + } + }, + { + "name": "craftcms/laravel-aliases", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/craftcms/laravel-aliases.git", + "reference": "734ea28e7fc7acfc3988f64475b416ecbc46419e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/laravel-aliases/zipball/734ea28e7fc7acfc3988f64475b416ecbc46419e", + "reference": "734ea28e7fc7acfc3988f64475b416ecbc46419e", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^12.0||^13.0", + "php": "^8.2", + "yiisoft/aliases": "^3.0" + }, + "require-dev": { + "larastan/larastan": "^2.9||^3.0", + "laravel/pint": "^1.14", + "nunomaduro/collision": "^8.1.1||^7.10.0", + "orchestra/testbench": "^10.0.0||^11.0", + "pestphp/pest": "^4.0", + "pestphp/pest-plugin-arch": "^4.0", + "pestphp/pest-plugin-laravel": "^4.0", + "phpstan/extension-installer": "^1.3||^2.0", + "phpstan/phpstan-deprecation-rules": "^1.1||^2.0", + "phpstan/phpstan-phpunit": "^1.3||^2.0" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Aliases": "CraftCms\\Aliases\\Facades\\Aliases" + }, + "providers": [ + "CraftCms\\Aliases\\AliasesServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "CraftCms\\Aliases\\": "src/", + "CraftCms\\Aliases\\Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pixel & Tonic", + "homepage": "https://pixelandtonic.com/" + } + ], + "description": "A Laravel wrapper around yiisoft/aliases", + "homepage": "https://github.com/craftcms/laravel-aliases", + "keywords": [ + "craftcms", + "laravel", + "laravel-aliases", + "yii" + ], + "support": { + "issues": "https://github.com/craftcms/laravel-aliases/issues", + "source": "https://github.com/craftcms/laravel-aliases/tree/2.1.0" + }, + "time": "2026-03-17T14:59:00+00:00" + }, + { + "name": "craftcms/laravel-dependency-aware-cache", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/craftcms/laravel-dependency-aware-cache.git", + "reference": "5d5352c6a56b901d1c61f87bf912301785c7f350" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/laravel-dependency-aware-cache/zipball/5d5352c6a56b901d1c61f87bf912301785c7f350", + "reference": "5d5352c6a56b901d1c61f87bf912301785c7f350", + "shasum": "" + }, + "require": { + "illuminate/cache": "^12.0|^13.0", + "illuminate/contracts": "^12.0||^13.0", + "php": "^8.2" + }, + "require-dev": { + "larastan/larastan": "^2.9||^3.0", + "laravel/pint": "^1.14", + "nunomaduro/collision": "^8.1.1||^7.10.0", + "orchestra/testbench": "^10.0.0||^9.0.0||^8.22.0||^9.0||^10.0||^11.0", + "pestphp/pest": "^4.0", + "pestphp/pest-plugin-arch": "^v4.0.0", + "pestphp/pest-plugin-laravel": "^v4.1.0", + "phpstan/extension-installer": "^1.3||^2.0", + "phpstan/phpstan-deprecation-rules": "^1.1||^2.0", + "phpstan/phpstan-phpunit": "^1.3||^2.0" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "DependencyCache": "CraftCms\\DependencyAwareCache\\Facades\\DependencyCache" + }, + "providers": [ + "CraftCms\\DependencyAwareCache\\CacheServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "CraftCms\\DependencyAwareCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pixel & Tonic", + "homepage": "https://pixelandtonic.com/" + } + ], + "description": "A dependency aware cache repository for Laravel", + "homepage": "https://github.com/craftcms/laravel-dependency-aware-cache", + "keywords": [ + "cache", + "craftcms", + "laravel" + ], + "support": { + "issues": "https://github.com/craftcms/laravel-dependency-aware-cache/issues", + "source": "https://github.com/craftcms/laravel-dependency-aware-cache/tree/1.2.3" + }, + "time": "2026-05-01T12:08:11+00:00" + }, + { + "name": "craftcms/laravel-ruleset-validation", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/craftcms/laravel-ruleset-validation.git", + "reference": "5fd54f4643f4746d6ac662bbec13aa225f62edfb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/laravel-ruleset-validation/zipball/5fd54f4643f4746d6ac662bbec13aa225f62edfb", + "reference": "5fd54f4643f4746d6ac662bbec13aa225f62edfb", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^13.0", + "illuminate/support": "^13.0", + "illuminate/validation": "^13.0", + "php": "^8.4" + }, + "require-dev": { + "larastan/larastan": "^3.0", + "laravel/pint": "^v1.29", + "nunomaduro/collision": "^8.1.1", + "orchestra/testbench": "^11.0", + "pestphp/pest": "^4.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "CraftCms\\RulesetValidation\\RulesetValidationServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "CraftCms\\RulesetValidation\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pixel & Tonic", + "homepage": "https://pixelandtonic.com/" + } + ], + "description": "Validate requests and objects with reusable Laravel rulesets.", + "homepage": "https://github.com/craftcms/laravel-ruleset-validation", + "keywords": [ + "craftcms", + "laravel", + "rulesets", + "validation" + ], + "support": { + "issues": "https://github.com/craftcms/laravel-ruleset-validation/issues", + "source": "https://github.com/craftcms/laravel-ruleset-validation/tree/1.1.0" + }, + "time": "2026-04-22T11:01:37+00:00" + }, + { + "name": "craftcms/plugin-installer", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/craftcms/plugin-installer.git", + "reference": "bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/plugin-installer/zipball/bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f", + "reference": "bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4" + }, + "require-dev": { + "composer/composer": "^1.0 || ^2.0" + }, + "type": "composer-plugin", + "extra": { + "class": "craft\\composer\\Plugin" + }, + "autoload": { + "psr-4": { + "craft\\composer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Craft CMS Plugin Installer", + "homepage": "https://craftcms.com/", + "keywords": [ + "cms", + "composer", + "craftcms", + "installer", + "plugin" + ], + "support": { + "docs": "https://craftcms.com/docs", + "email": "support@craftcms.com", + "forum": "https://craftcms.stackexchange.com/", + "issues": "https://github.com/craftcms/cms/issues?state=open", + "rss": "https://craftcms.com/changelog.rss", + "source": "https://github.com/craftcms/cms" + }, + "time": "2023-02-22T13:17:00+00:00" + }, + { + "name": "craftcms/server-check", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/craftcms/server-check.git", + "reference": "8628114d482ac2c18747619b82b8d06d337145fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/server-check/zipball/8628114d482ac2c18747619b82b8d06d337145fb", + "reference": "8628114d482ac2c18747619b82b8d06d337145fb", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "server/requirements" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Craft CMS Server Check", + "homepage": "https://craftcms.com/", + "keywords": [ + "cms", + "craftcms", + "requirements", + "yii2" + ], + "support": { + "docs": "https://github.com/craftcms/docs", + "email": "support@craftcms.com", + "forum": "https://craftcms.stackexchange.com/", + "issues": "https://github.com/craftcms/server-check/issues?state=open", + "rss": "https://github.com/craftcms/server-check/releases.atom", + "source": "https://github.com/craftcms/server-check" + }, + "time": "2026-05-06T18:15:11+00:00" + }, + { + "name": "craftcms/url-validator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/craftcms/url-validator.git", + "reference": "3918c21317a856d6313b3fbf40d70ce013cdd715" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/url-validator/zipball/3918c21317a856d6313b3fbf40d70ce013cdd715", + "reference": "3918c21317a856d6313b3fbf40d70ce013cdd715", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.0.2" + }, + "require-dev": { + "laravel/pint": "^1.29", + "nunomaduro/collision": "^8.1", + "pestphp/pest": "^3.0", + "phpstan/phpstan": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "CraftCms\\UrlValidator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pixel & Tonic", + "homepage": "https://pixelandtonic.com/" + } + ], + "description": "Validate URLs and IP addresses against SSRF, DNS rebinding, and cloud-metadata attacks.", + "homepage": "https://github.com/craftcms/url-validator", + "keywords": [ + "IP", + "craftcms", + "security", + "ssrf", + "url", + "validation" + ], + "support": { + "issues": "https://github.com/craftcms/url-validator/issues", + "source": "https://github.com/craftcms/url-validator/tree/1.1.0" + }, + "time": "2026-07-06T20:35:29+00:00" + }, + { + "name": "dasprid/enum", + "version": "1.0.7", + "source": { + "type": "git", + "url": "https://github.com/DASPRiD/Enum.git", + "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/b5874fa9ed0043116c72162ec7f4fb50e02e7cce", + "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce", + "shasum": "" + }, + "require": { + "php": ">=7.1 <9.0" + }, + "require-dev": { + "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11", + "squizlabs/php_codesniffer": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "DASPRiD\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" + } + ], + "description": "PHP 7.1 enum implementation", + "keywords": [ + "enum", + "map" + ], + "support": { + "issues": "https://github.com/DASPRiD/Enum/issues", + "source": "https://github.com/DASPRiD/Enum/tree/1.0.7" + }, + "time": "2025-09-16T12:23:56+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "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": "^4.0.0" + }, + "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.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "doctrine/collections", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "7c2f25ed928553a3de389ccb99aa46c0eedb2d4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/7c2f25ed928553a3de389ccb99aa46c0eedb2d4d", + "reference": "7c2f25ed928553a3de389ccb99aa46c0eedb2d4d", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1", + "php": "^8.4", + "symfony/polyfill-php86": "^1.36" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "ext-json": "*", + "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpunit/phpunit": "^12.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Collections\\": "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" + } + ], + "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", + "homepage": "https://www.doctrine-project.org/projects/collections.html", + "keywords": [ + "array", + "collections", + "iterators", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/3.1.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%2Fcollections", + "type": "tidelift" + } + ], + "time": "2026-04-29T20:41:02+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.6", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=14" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12 || ^14", + "phpstan/phpstan": "1.4.10 || 2.1.30", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "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/1.1.6" + }, + "time": "2026-02-07T07:09:04+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "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" + } + ], + "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.1.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%2Finflector", + "type": "tidelift" + } + ], + "time": "2025-08-10T19:31:58+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "71d305eaa6480d3d3460c7d053d1da7749fa9cca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/71d305eaa6480d3d3460c7d053d1da7749fa9cca", + "reference": "71d305eaa6480d3d3460c7d053d1da7749fa9cca", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^10.5.58 || ^12.5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "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": "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/3.0.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": "2026-10-01T06:59:29+00:00" + }, + { + "name": "dompdf/dompdf", + "version": "v3.1.6", + "source": { + "type": "git", + "url": "https://github.com/dompdf/dompdf.git", + "reference": "6d4b4eb8500f7a786da8868ba463a71b725a4005" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6d4b4eb8500f7a786da8868ba463a71b725a4005", + "reference": "6d4b4eb8500f7a786da8868ba463a71b725a4005", + "shasum": "" + }, + "require": { + "dompdf/php-font-lib": "^1.0.0", + "dompdf/php-svg-lib": "^1.0.0", + "ext-dom": "*", + "ext-mbstring": "*", + "masterminds/html5": "^2.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "ext-gd": "*", + "ext-json": "*", + "ext-zip": "*", + "mockery/mockery": "^1.3", + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11", + "squizlabs/php_codesniffer": "^3.5", + "symfony/process": "^4.4 || ^5.4 || ^6.2 || ^7.0" + }, + "suggest": { + "ext-gd": "Needed to process images", + "ext-gmagick": "Improves image processing performance", + "ext-imagick": "Improves image processing performance", + "ext-zlib": "Needed for pdf stream compression" + }, + "type": "library", + "autoload": { + "psr-4": { + "Dompdf\\": "src/" + }, + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "The Dompdf Community", + "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md" + } + ], + "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", + "homepage": "https://github.com/dompdf/dompdf", + "support": { + "issues": "https://github.com/dompdf/dompdf/issues", + "source": "https://github.com/dompdf/dompdf/tree/v3.1.6" + }, + "time": "2026-07-20T12:29:38+00:00" + }, + { + "name": "dompdf/php-font-lib", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-font-lib.git", + "reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a6e9a688a2a80016ac080b97be73d3e10c444c9a", + "reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11 || ^12" + }, + "type": "library", + "autoload": { + "psr-4": { + "FontLib\\": "src/FontLib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "The FontLib Community", + "homepage": "https://github.com/dompdf/php-font-lib/blob/master/AUTHORS.md" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/dompdf/php-font-lib", + "support": { + "issues": "https://github.com/dompdf/php-font-lib/issues", + "source": "https://github.com/dompdf/php-font-lib/tree/1.0.2" + }, + "time": "2026-01-20T14:10:26+00:00" + }, + { + "name": "dompdf/php-svg-lib", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-svg-lib.git", + "reference": "8259ffb930817e72b1ff1caef5d226501f3dfeb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/8259ffb930817e72b1ff1caef5d226501f3dfeb1", + "reference": "8259ffb930817e72b1ff1caef5d226501f3dfeb1", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^8.0", + "sabberworm/php-css-parser": "^8.4 || ^9.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11" + }, + "type": "library", + "autoload": { + "psr-4": { + "Svg\\": "src/Svg" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "The SvgLib Community", + "homepage": "https://github.com/dompdf/php-svg-lib/blob/master/AUTHORS.md" + } + ], + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/dompdf/php-svg-lib", + "support": { + "issues": "https://github.com/dompdf/php-svg-lib/issues", + "source": "https://github.com/dompdf/php-svg-lib/tree/1.0.2" + }, + "time": "2026-01-02T16:01:13+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "shasum": "" + }, + "require": { + "php": "^8.2|^8.3|^8.4|^8.5" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.32|^2.1.31", + "phpunit/phpunit": "^8.5.48|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "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.6.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2025-10-31T18:51:33+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.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/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2025-03-06T22:45:56+00:00" + }, + { + "name": "elvanto/litemoji", + "version": "5.2.0", + "source": { + "type": "git", + "url": "https://github.com/elvanto/litemoji.git", + "reference": "859dbcaa31ac5eb99c0811a981ba9d9ca3dab1c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/elvanto/litemoji/zipball/859dbcaa31ac5eb99c0811a981ba9d9ca3dab1c1", + "reference": "859dbcaa31ac5eb99c0811a981ba9d9ca3dab1c1", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=7.4" + }, + "require-dev": { + "milesj/emojibase": "^16.0.3", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "LitEmoji\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library simplifying the conversion of unicode, HTML and shortcode emoji.", + "keywords": [ + "emoji", + "php-emoji" + ], + "support": { + "issues": "https://github.com/elvanto/litemoji/issues", + "source": "https://github.com/elvanto/litemoji/tree/5.2.0" + }, + "time": "2025-07-15T04:24:11+00:00" + }, + { + "name": "enshrined/svg-sanitize", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/darylldoyle/svg-sanitizer.git", + "reference": "f3300fcd1bbf67d205b52217c75d0f7d6a8c47ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/f3300fcd1bbf67d205b52217c75d0f7d6a8c47ff", + "reference": "f3300fcd1bbf67d205b52217c75d0f7d6a8c47ff", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5 || ^8.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "enshrined\\svgSanitize\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Daryll Doyle", + "email": "daryll@enshrined.co.uk" + } + ], + "description": "An SVG sanitizer for PHP", + "support": { + "issues": "https://github.com/darylldoyle/svg-sanitizer/issues", + "source": "https://github.com/darylldoyle/svg-sanitizer/tree/1.0.0" + }, + "time": "2026-09-01T09:35:47+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "shasum": "" + }, + "require": { + "php": "^8.1", + "symfony/http-foundation": "^5.4|^6.4|^7.3|^8" + }, + "require-dev": { + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-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.4.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2025-12-03T09:33:47+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "adccca3324eece92ca35463648c12b9e6293c05b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/adccca3324eece92ca35463648c12b9e6293c05b", + "reference": "adccca3324eece92ca35463648c12b9e6293c05b", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.10" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.52 || ^9.6.34 || ^10.5.63 || ^11.5.55 || ^12.5.14" + }, + "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.2.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2026-08-24T09:06:52+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.15.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "ee80339fd9177ba44c49cdb653ff02a4d1106b9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee80339fd9177ba44c49cdb653ff02a4d1106b9a", + "reference": "ee80339fd9177ba44c49cdb653ff02a4d1106b9a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^2.5.3", + "guzzlehttp/psr7": "^2.13.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/polyfill-php80": "^1.25" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.3", + "guzzlehttp/test-server": "^0.7", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.52 || ^9.6.34", + "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 + } + }, + "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.15.5" + }, + "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": "2026-08-24T09:21:06+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.5.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/cde49999552d185d64715fe9c1f77a2aadd2f9f1", + "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.52 || ^9.6.34" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "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/2.5.3" + }, + "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": "2026-08-24T09:11:28+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.13.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "95e7828100de18b4e269fb1703be530082d5166d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/95e7828100de18b4e269fb1703be530082d5166d", + "reference": "95e7828100de18b4e269fb1703be530082d5166d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/polyfill-php80": "^1.25" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "1.1.0", + "jshttp/mime-db": "1.54.0.1", + "phpunit/phpunit": "^8.5.52 || ^9.6.34" + }, + "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.13.1" + }, + "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": "2026-08-24T09:13:11+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "7a466ad606491eb6528c717482f7cca77f1851f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/7a466ad606491eb6528c717482f7cca77f1851f3", + "reference": "7a466ad606491eb6528c717482f7cca77f1851f3", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "symfony/polyfill-php80": "^1.25" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^9.6.34", + "uri-template/tests": "1.0.2" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "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" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v2.0.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2026-08-24T17:13:02+00:00" + }, + { + "name": "ibericode/vat", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/ibericode/vat.git", + "reference": "6abfd3a579946347d9cb66883c75f49244da8f8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ibericode/vat/zipball/6abfd3a579946347d9cb66883c75f49244da8f8c", + "reference": "6abfd3a579946347d9cb66883c75f49244da8f8c", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "php": ">=8.2" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.54", + "phpunit/phpunit": "^11.1" + }, + "suggest": { + "ext-soap": "Needed to support VIES VAT number validation", + "ibericode/vat-bundle": "Symfony bundle for integrating this package" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ibericode\\Vat\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Danny van Kooten", + "email": "hi@dvk.co" + } + ], + "description": "PHP library for dealing with EU VAT", + "keywords": [ + "vat" + ], + "support": { + "issues": "https://github.com/ibericode/vat/issues", + "source": "https://github.com/ibericode/vat/tree/2.1.2" + }, + "time": "2026-02-24T17:50:33+00:00" + }, + { + "name": "iio/libmergepdf", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/hanneskod/libmergepdf.git", + "reference": "6613b978c08d00d559796ab510614243e4dd5dfb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hanneskod/libmergepdf/zipball/6613b978c08d00d559796ab510614243e4dd5dfb", + "reference": "6613b978c08d00d559796ab510614243e4dd5dfb", + "shasum": "" + }, + "require": { + "php": "^7.1||^8.0", + "setasign/fpdi": "^2", + "tecnickcom/tcpdf": "^6.2.22" + }, + "conflict": { + "rafikhaceb/tcpdi": "*", + "setasign/fpdf": "*" + }, + "require-dev": { + "phpunit/phpunit": "^7|^8", + "smalot/pdfparser": "~0.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "iio\\libmergepdf\\": "src/" + }, + "classmap": [ + "tcpdi/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "WTFPL" + ], + "authors": [ + { + "name": "Hannes Forsgård", + "email": "hannes.forsgard@fripost.org" + } + ], + "description": "Library for merging multiple PDFs", + "homepage": "https://github.com/hanneskod/libmergepdf", + "keywords": [ + "merge", + "pdf" + ], + "support": { + "issues": "https://github.com/hanneskod/libmergepdf/issues", + "source": "https://github.com/hanneskod/libmergepdf/tree/4.0.4" + }, + "time": "2020-12-07T12:18:49+00:00" + }, + { + "name": "inertiajs/inertia-laravel", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/inertiajs/inertia-laravel.git", + "reference": "35a27ea62b8a53ec40269c4c675db5d9d0e02426" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/35a27ea62b8a53ec40269c4c675db5d9d0e02426", + "reference": "35a27ea62b8a53ec40269c4c675db5d9d0e02426", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel/framework": "^11.35|^12.0|^13.0", + "php": "^8.2.0", + "symfony/console": "^7.0|^8.0" + }, + "conflict": { + "laravel/boost": "<2.5.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.15.2|^8.0", + "larastan/larastan": "^3.0", + "laravel/pint": "^1.16", + "mockery/mockery": "^1.3.3", + "orchestra/testbench": "^9.2|^10.0|^11.0", + "phpunit/phpunit": "^11.5|^12.0" + }, + "suggest": { + "ext-pcntl": "Recommended when running the Inertia SSR server via the `inertia:start-ssr` artisan command." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Inertia\\ServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "./helpers.php" + ], + "psr-4": { + "Inertia\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Reinink", + "email": "jonathan@reinink.ca", + "homepage": "https://reinink.ca" + } + ], + "description": "The Laravel adapter for Inertia.js.", + "keywords": [ + "inertia", + "laravel" + ], + "support": { + "issues": "https://github.com/inertiajs/inertia-laravel/issues", + "source": "https://github.com/inertiajs/inertia-laravel/tree/v3.5.1" + }, + "time": "2026-10-01T10:38:10+00:00" + }, + { + "name": "intervention/gif", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/Intervention/gif.git", + "reference": "bb395af960deffe64d70c976b4df9283f68e762d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/gif/zipball/bb395af960deffe64d70c976b4df9283f68e762d", + "reference": "bb395af960deffe64d70c976b4df9283f68e762d", + "shasum": "" + }, + "require": { + "php": "^8.3" + }, + "require-dev": { + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^12.0", + "slevomat/coding-standard": "~8.0", + "squizlabs/php_codesniffer": "^4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Intervention\\Gif\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" + } + ], + "description": "PHP GIF Encoder/Decoder", + "homepage": "https://github.com/intervention/gif", + "keywords": [ + "animation", + "gd", + "gif", + "image" + ], + "support": { + "issues": "https://github.com/Intervention/gif/issues", + "source": "https://github.com/Intervention/gif/tree/5.0.1" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + }, + { + "url": "https://ko-fi.com/interventionphp", + "type": "ko_fi" + } + ], + "time": "2026-05-03T06:04:47+00:00" + }, + { + "name": "intervention/image", + "version": "4.3.4", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "b70df03b4fcc1e4c24c9d474ac034541cbf5e2f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/b70df03b4fcc1e4c24c9d474ac034541cbf5e2f9", + "reference": "b70df03b4fcc1e4c24c9d474ac034541cbf5e2f9", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "intervention/gif": "^5", + "php": "^8.3" + }, + "require-dev": { + "intervention/coding-standard": "^1", + "mockery/mockery": "^1.6", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^12.0" + }, + "suggest": { + "ext-exif": "Recommended to be able to read EXIF data properly." + }, + "type": "library", + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io" + } + ], + "description": "PHP Image Processing", + "homepage": "https://image.intervention.io", + "keywords": [ + "gd", + "image", + "imagick", + "resize", + "thumbnail", + "watermark" + ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/4.3.4" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + }, + { + "url": "https://ko-fi.com/interventionphp", + "type": "ko_fi" + } + ], + "time": "2026-10-04T09:36:33+00:00" + }, + { + "name": "laravel/framework", + "version": "v13.34.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "c829b4982d29344cbcf1d7ad78eb5d2bb8ae66c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/c829b4982d29344cbcf1d7ad78eb5d2bb8ae66c4", + "reference": "c829b4982d29344cbcf1d7ad78eb5d2bb8ae66c4", + "shasum": "" + }, + "require": { + "brick/math": "^0.14.2 || ^0.15 || ^0.16 || ^0.17 || ^0.18 || ^0.19 || ^0.20 || ^1.0", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.4", + "egulias/email-validator": "^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8.2 || ^8.0", + "guzzlehttp/promises": "^2.0.3 || ^3.0", + "guzzlehttp/psr7": "^2.9 || ^3.0", + "guzzlehttp/uri-template": "^1.0 || ^2.0", + "laravel/prompts": "^0.3.11", + "laravel/serializable-closure": "^2.0.10", + "league/commonmark": "^2.8.1", + "league/flysystem": "^3.25.1", + "league/flysystem-local": "^3.25.1", + "league/uri": "^7.5.1", + "monolog/monolog": "^3.10", + "nesbot/carbon": "^3.8.4", + "nunomaduro/termwind": "^2.0", + "php": "^8.3", + "psr/container": "^1.1.1 || ^2.0.1", + "psr/http-message": "^1.0 || ^2.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^7.4.0 || ^8.0.0", + "symfony/error-handler": "^7.4.0 || ^8.0.0", + "symfony/finder": "^7.4.0 || ^8.0.0", + "symfony/http-foundation": "^7.4.0 || ^8.0.0", + "symfony/http-kernel": "^7.4.0 || ^8.0.0", + "symfony/mailer": "^7.4.0 || ^8.0.0", + "symfony/mime": "^7.4.0 || ^8.0.0", + "symfony/polyfill-php84": "^1.36", + "symfony/polyfill-php85": "^1.36", + "symfony/polyfill-php86": "^1.36", + "symfony/process": "^7.4.5 || ^8.0.5", + "symfony/routing": "^7.4.0 || ^8.0.0", + "symfony/uid": "^7.4.0 || ^8.0.0", + "symfony/var-dumper": "^7.4.0 || ^8.0.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.6.1", + "voku/portable-ascii": "^2.0.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1 || 2.0", + "psr/log-implementation": "1.0 || 2.0 || 3.0", + "psr/simple-cache-implementation": "1.0 || 2.0 || 3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/concurrency": "self.version", + "illuminate/conditionable": "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/image": "self.version", + "illuminate/json-schema": "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/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/reflection": "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", + "spatie/once": "*" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.322.9", + "ext-gmp": "*", + "fakerphp/faker": "^1.24", + "intervention/image": "^4.0", + "laravel/pint": "^1.18", + "league/flysystem-aws-s3-v3": "^3.25.1", + "league/flysystem-ftp": "^3.25.1", + "league/flysystem-path-prefixing": "^3.25.1", + "league/flysystem-read-only": "^3.25.1", + "league/flysystem-sftp-v3": "^3.25.1", + "mockery/mockery": "^1.6.10", + "opis/json-schema": "^2.4.1", + "orchestra/testbench-core": "^11.5.0", + "pda/pheanstalk": "^7.0.0 || ^8.0.0", + "php-http/discovery": "^1.15", + "phpstan/phpstan": "2.2.15", + "phpunit/phpunit": "^11.5.50 || ^12.5.8 || ^13.0.3", + "predis/predis": "^2.3 || ^3.0", + "rector/rector": "2.6.3", + "resend/resend-php": "^1.0", + "symfony/cache": "^7.4.0 || ^8.0.0", + "symfony/http-client": "^7.4.0 || ^8.0.0", + "symfony/mercure": "^0.8.0", + "symfony/psr-http-message-bridge": "^7.4.0 || ^8.0.0", + "symfony/translation": "^7.4.0 || ^8.0.0", + "web-token/jwt-library": "^4.1" + }, + "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.322.9).", + "brianium/paratest": "Required to run tests in parallel (^7.0 || ^8.0).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "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 and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "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 || ^6.0).", + "fakerphp/faker": "Required to generate fake data using the fake() helper (^1.23).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "intervention/image": "Required to use the image processing features (^4.0).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).", + "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", + "mockery/mockery": "Required to use mocking (^1.6).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^7.0 || ^8.0).", + "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", + "phpunit/phpunit": "Required to use assertions and run tests (^11.5.50 || ^12.5.8 || ^13.0.3).", + "predis/predis": "Required to use the predis connector (^2.3 || ^3.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0 || ^7.0).", + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0 || ^1.0).", + "spatie/fork": "Required to use the 'fork' concurrency driver (^1.2).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.4 || ^8.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.4 || ^8.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.4 || ^8.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.4 || ^8.0).", + "symfony/mercure": "Required to use the Mercure broadcast driver (^0.8).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.4 || ^8.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.4 || ^8.0).", + "web-token/jwt-library": "Required to sign Mercure JWTs and use end-to-end encrypted channels (^4.1)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "13.0.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/functions.php", + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Log/functions.php", + "src/Illuminate/Reflection/helpers.php", + "src/Illuminate/Support/functions.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/", + "src/Illuminate/Reflection/" + ] + } + }, + "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": "2026-09-29T12:46:21+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.3.24", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "5d3cdef29e93ca3b62b1871359db3078cd99908b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/5d3cdef29e93ca3b62b1871359db3078cd99908b", + "reference": "5d3cdef29e93ca3b62b1871359db3078cd99908b", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.2|^7.0|^8.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "illuminate/collections": "^10.0|^11.0|^12.0|^13.0", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3|^3.4|^4.0", + "phpstan/phpstan": "^1.12.28", + "phpstan/phpstan-mockery": "^1.1.3" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.3.24" + }, + "time": "2026-08-20T12:55:36+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "2d5869a838bbcf37e0d8b0568fc41914e81374b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/2d5869a838bbcf37e0d8b0568fc41914e81374b5", + "reference": "2d5869a838bbcf37e0d8b0568fc41914e81374b5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0|^11.0|^12.0|^13.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0|^4.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0|^8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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": "2026-09-22T14:32:34+00:00" + }, + { + "name": "laravel/wayfinder", + "version": "v0.1.21", + "source": { + "type": "git", + "url": "https://github.com/laravel/wayfinder.git", + "reference": "a85a996cea189f59cac14854f8b13319a29007f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/wayfinder/zipball/a85a996cea189f59cac14854f8b13319a29007f3", + "reference": "a85a996cea189f59cac14854f8b13319a29007f3", + "shasum": "" + }, + "require": { + "illuminate/console": "^11.0|^12.0|^13.0", + "illuminate/filesystem": "^11.0|^12.0|^13.0", + "illuminate/routing": "^11.0|^12.0|^13.0", + "illuminate/support": "^11.0|^12.0|^13.0", + "php": "^8.2", + "phpstan/phpdoc-parser": "^2.3" + }, + "conflict": { + "laravel/boost": "<2.5.0" + }, + "require-dev": { + "laravel/pint": "^1.21", + "orchestra/testbench": "^11.0|^10.1|^9.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Wayfinder\\WayfinderServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Wayfinder\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Generate TypeScript representations of your Laravel actions and routes.", + "homepage": "https://github.com/laravel/wayfinder", + "keywords": [ + "laravel", + "php", + "routes", + "typescript" + ], + "support": { + "issues": "https://github.com/laravel/wayfinder/issues", + "source": "https://github.com/laravel/wayfinder" + }, + "time": "2026-08-04T21:55:43+00:00" + }, + { + "name": "league/commonmark", + "version": "2.10.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "6efbd9c472b91db0a3350fcd601c8332c2382e1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/6efbd9c472b91db0a3350fcd601c8332c2382e1f", + "reference": "6efbd9c472b91db0a3350fcd601c8332c2382e1f", + "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.31.1", + "commonmark/commonmark.js": "0.31.1", + "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 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^2.0.0", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 | ^7.0 || ^8.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0 || ^8.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0 || ^8.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.11-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": "2026-09-21T13:07:34+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "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": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.36.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "f7fb152932f30072d573510cbd4dd657d6475b25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f7fb152932f30072d573510cbd4dd657d6475b25", + "reference": "f7fb152932f30072d573510cbd4dd657d6475b25", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3|^2", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2|^2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.36.0" + }, + "time": "2026-09-02T08:00:27+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.35.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "a099b24dce160f3b2239043d13d47c4a1a214ea4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/a099b24dce160f3b2239043d13d47c4a1a214ea4", + "reference": "a099b24dce160f3b2239043d13d47c4a1a214ea4", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.35.3" + }, + "time": "2026-08-12T13:29:21+00:00" + }, + { + "name": "league/flysystem-path-prefixing", + "version": "3.31.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-path-prefixing.git", + "reference": "d7f667c2d9d6684b74f30c6ad81ae7a0c23232f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-path-prefixing/zipball/d7f667c2d9d6684b74f30c6ad81ae7a0c23232f3", + "reference": "d7f667c2d9d6684b74f30c6ad81ae7a0c23232f3", + "shasum": "" + }, + "require": { + "league/flysystem": "^3.10.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\PathPrefixing\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Path prefixing filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "filesystem", + "prefix", + "prefixing" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-path-prefixing/tree/3.31.0" + }, + "time": "2026-01-23T15:30:45+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.17.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/f5f47eff7c48ed1003069a2ca67f316fb4021c76", + "reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0 || ^11.0 || ^12.0" + }, + "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.17.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2026-07-09T11:49:27+00:00" + }, + { + "name": "league/uri", + "version": "7.8.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "08cf38e3924d4f56238125547b5720496fac8fd4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/08cf38e3924d4f56238125547b5720496fac8fd4", + "reference": "08cf38e3924d4f56238125547b5720496fac8fd4", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.8.1", + "php": "^8.1", + "psr/http-factory": "^1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "URN", + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc2141", + "rfc3986", + "rfc3987", + "rfc6570", + "rfc8141", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.8.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-03-15T20:22:25+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.8.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/85d5c77c5d6d3af6c54db4a78246364908f3c928", + "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-03-08T20:05:35+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "3.2.2", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e", + "reference": "77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-zlib": "*", + "php-64bit": "^8.3" + }, + "require-dev": { + "brianium/paratest": "^7.7", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.86", + "guzzlehttp/guzzle": "^7.5", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^12.0", + "vimeo/psalm": "^6.0" + }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.2.2" + }, + "funding": [ + { + "url": "https://github.com/maennchen", + "type": "github" + } + ], + "time": "2026-04-11T18:38:28+00:00" + }, + { + "name": "markbaker/complex", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Complex\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2" + }, + "time": "2022-12-06T16:21:08+00:00" + }, + { + "name": "markbaker/matrix", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Matrix\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@demon-angel.eu" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1" + }, + "time": "2022-12-02T22:17:43+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.11.0", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7", + "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=7.4" + }, + "require-dev": { + "phpunit/phpunit": "^6 || ^7 || ^8 || ^9 || ^10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.11.0" + }, + "time": "2026-08-18T06:18:41+00:00" + }, + { + "name": "moneyphp/money", + "version": "v4.9.0", + "source": { + "type": "git", + "url": "https://github.com/moneyphp/money.git", + "reference": "d49ee625c6ba79b9d7a228ce153b02fc1032152b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/moneyphp/money/zipball/d49ee625c6ba79b9d7a228ce153b02fc1032152b", + "reference": "d49ee625c6ba79b9d7a228ce153b02fc1032152b", + "shasum": "" + }, + "require": { + "ext-bcmath": "*", + "ext-filter": "*", + "ext-json": "*", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" + }, + "require-dev": { + "cache/taggable-cache": "^1.1.0", + "doctrine/coding-standard": "^12.0", + "doctrine/instantiator": "^1.5.0 || ^2.0", + "ext-gmp": "*", + "ext-intl": "*", + "florianv/exchanger": "^2.8.1", + "florianv/swap": "^4.3.0", + "moneyphp/crypto-currencies": "^1.1.0", + "moneyphp/iso-currencies": "^3.4", + "php-http/message": "^1.16.0", + "php-http/mock-client": "^1.6.0", + "phpbench/phpbench": "^1.2.5", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1.9", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.9", + "psr/cache": "^1.0.1 || ^2.0 || ^3.0", + "ticketswap/phpstan-error-formatter": "^1.1" + }, + "suggest": { + "ext-gmp": "Calculate without integer limits", + "ext-intl": "Format Money objects with intl", + "florianv/exchanger": "Exchange rates library for PHP", + "florianv/swap": "Exchange rates library for PHP", + "psr/cache-implementation": "Used for Currency caching" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Money\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Verraes", + "email": "mathias@verraes.net", + "homepage": "http://verraes.net" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "Frederik Bosch", + "email": "f.bosch@genkgo.nl" + } + ], + "description": "PHP implementation of Fowler's Money pattern", + "homepage": "http://moneyphp.org", + "keywords": [ + "Value Object", + "money", + "vo" + ], + "support": { + "issues": "https://github.com/moneyphp/money/issues", + "source": "https://github.com/moneyphp/money/tree/v4.9.0" + }, + "time": "2026-05-04T20:23:15+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.12.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "d7059e4c691d05ea1222b5124bed0f961be46e15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/d7059e4c691d05ea1222b5124bed0f961be46e15", + "reference": "d7059e4c691d05ea1222b5124bed0f961be46e15", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8 || ^2.0", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "psr/clock": "^1.0", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "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", + "psr/clock": "Required to pass a clock to the Logger and control the timestamp of log records", + "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": "3.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/3.12.1" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2026-09-29T19:21:12+00:00" + }, + { + "name": "nesbot/carbon", + "version": "3.14.2", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "94cfc34887f07ab5c0efa07914c8f527544e3224" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/94cfc34887f07ab5c0efa07914c8f527544e3224", + "reference": "94cfc34887f07ab5c0efa07914c8f527544e3224", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "<100.0", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3.12 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^v3.87.1", + "kylekatarnls/multi-tester": "^2.5.3", + "phpmd/phpmd": "^3.0@dev", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.22", + "phpunit/phpunit": "^10.5.53", + "squizlabs/php_codesniffer": "^3.13.4 || ^4.0.0" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" + } + }, + "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://carbonphp.github.io/carbon/", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbonphp.github.io/carbon/guide/getting-started/introduction.html", + "issues": "https://github.com/CarbonPHP/carbon/issues", + "source": "https://github.com/CarbonPHP/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": "2026-10-02T07:26:52+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.6", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "c54350438cd6914616f790a49cb424605f421562" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/c54350438cd6914616f790a49cb424605f421562", + "reference": "c54350438cd6914616f790a49cb424605f421562", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.5" + }, + "require-dev": { + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1.39@stable", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "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.3.6" + }, + "time": "2026-08-16T21:58:41+00:00" + }, + { + "name": "nette/utils", + "version": "v4.1.5", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "b043439dbdf954e6c28b5ea7e34b0100f83165e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/b043439dbdf954e6c28b5ea7e34b0100f83165e0", + "reference": "b043439dbdf954e6c28b5ea7e34b0100f83165e0", + "shasum": "" + }, + "require": { + "php": "8.2 - 8.5" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.5", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::chr(), ord() 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()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "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/v4.1.5" + }, + "time": "2026-07-17T23:02:45+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "712a31b768f5daea284c2169a7d227031001b9a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/712a31b768f5daea284c2169a7d227031001b9a8", + "reference": "712a31b768f5daea284c2169a7d227031001b9a8", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.4.4 || ^8.0.4" + }, + "require-dev": { + "illuminate/console": "^11.47.0", + "laravel/pint": "^1.27.1", + "mockery/mockery": "^1.6.12", + "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.3.2", + "phpstan/phpstan": "^1.12.32", + "phpstan/phpstan-strict-rules": "^1.6.2", + "symfony/var-dumper": "^7.3.5 || ^8.0.4", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "It's like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v2.4.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2026-02-16T23:10:27+00:00" + }, + { + "name": "paragonie/constant_time_encoding", + "version": "v3.1.3", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "shasum": "" + }, + "require": { + "php": "^8" + }, + "require-dev": { + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2025-09-24T15:06:41+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "ee15a5a2022c8383906b225055e9496a6a5e6e3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/ee15a5a2022c8383906b225055e9496a6a5e6e3b", + "reference": "ee15a5a2022c8383906b225055e9496a6a5e6e3b", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "https://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.2.1" + }, + "time": "2025-11-10T21:21:55+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "6.0.3", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "7bae67520aa9f5ecc506d646810bd40d9da54582" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/7bae67520aa9f5ecc506d646810bd40d9da54582", + "reference": "7bae67520aa9f5ecc506d646810bd40d9da54582", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^2.0", + "phpstan/phpdoc-parser": "^2.0", + "webmozart/assert": "^1.9.1 || ^2" + }, + "require-dev": { + "mockery/mockery": "~1.3.5 || ~1.6.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^5.26", + "shipmonk/dead-code-detector": "^0.5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/6.0.3" + }, + "time": "2026-03-18T20:49:53+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "dbe2133bb23e2e33a6834f4ed417f24a1b167769" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dbe2133bb23e2e33a6834f4ed417f24a1b167769", + "reference": "dbe2133bb23e2e33a6834f4ed417f24a1b167769", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev", + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.1.0" + }, + "time": "2026-09-27T19:32:54+00:00" + }, + { + "name": "phpoffice/phpspreadsheet", + "version": "5.10.0", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "eb18727acf6b1f4cc67145a52ab04f9fd4c28d53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/eb18727acf6b1f4cc67145a52ab04f9fd4c28d53", + "reference": "eb18727acf6b1f4cc67145a52ab04f9fd4c28d53", + "shasum": "" + }, + "require": { + "composer/pcre": "^1||^2||^3", + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-filter": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "maennchen/zipstream-php": "^2.1 || ^3.0", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": "^8.2", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-main", + "dompdf/dompdf": "^2.0 || ^3.0", + "ext-intl": "*", + "ext-openssl": "*", + "friendsofphp/php-cs-fixer": "^3.2", + "mitoteam/jpgraph": "^10.5", + "mpdf/mpdf": "^8.1.1", + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/phpstan": "^1.1 || ^2.0", + "phpstan/phpstan-deprecation-rules": "^1.0 || ^2.0", + "phpstan/phpstan-phpunit": "^1.0 || ^2.0", + "phpunit/phpunit": "^10.5 || ^11.0", + "squizlabs/php_codesniffer": "^3.7", + "tecnickcom/tcpdf": ">=6.8.0 <7.0.0" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer", + "ext-intl": "PHP Internationalization Functions, required for NumberFormat Wizard and StringHelper::setLocale()", + "ext-openssl": "Handline Agile-encrypted Xlsx spreadsheets", + "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + }, + { + "name": "Owen Leibman" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.10.0" + }, + "time": "2026-09-17T03:54:50+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "67b192b6a42ec03944b972d6e633ddec78ad2c6d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/67b192b6a42ec03944b972d6e633ddec78ad2c6d", + "reference": "67b192b6a42ec03944b972d6e633ddec78ad2c6d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.54 || ^9.6.36 || ^10.5.64 || ^11.5.56 || ^12.5.33" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "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.10.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2026-08-24T00:54:40+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "2.3.6", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "1427af4647235b4a73b13940b1f1258d3584f36e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1427af4647235b4a73b13940b1f1258d3584f36e", + "reference": "1427af4647235b4a73b13940b1f1258d3584f36e", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.6" + }, + "time": "2026-09-27T20:07:45+00:00" + }, + { + "name": "pragmarx/google2fa", + "version": "v9.1.0", + "source": { + "type": "git", + "url": "https://github.com/antonioribeiro/google2fa.git", + "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/f00bc788c555adfb6765c437ff3538e59cd88af1", + "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "^1.0|^2.0|^3.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.0|^2.0", + "phpstan/phpstan-phpunit": "^1.0|^2.0", + "phpunit/phpunit": "~9|~10|~11|~12|~13", + "psalm/plugin-phpunit": "^0.19|^0.20", + "vimeo/psalm": "^5.26|^6.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "PragmaRX\\Google2FA\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" + } + ], + "description": "A One Time Password Authentication package, compatible with Google Authenticator.", + "keywords": [ + "2fa", + "Authentication", + "MFA", + "Two Factor Authentication", + "google-authenticator", + "google2fa", + "hotp", + "otp", + "rfc4226", + "rfc6238", + "totp" + ], + "support": { + "docs": "https://github.com/antonioribeiro/google2fa#readme", + "issues": "https://github.com/antonioribeiro/google2fa/issues", + "security": "https://github.com/antonioribeiro/google2fa/security/policy", + "source": "https://github.com/antonioribeiro/google2fa" + }, + "time": "2026-08-15T13:22:01+00:00" + }, + { + "name": "pragmarx/random", + "version": "v0.2.2", + "source": { + "type": "git", + "url": "https://github.com/antonioribeiro/random.git", + "reference": "daf08a189c5d2d40d1a827db46364d3a741a51b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antonioribeiro/random/zipball/daf08a189c5d2d40d1a827db46364d3a741a51b7", + "reference": "daf08a189c5d2d40d1a827db46364d3a741a51b7", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "fzaninotto/faker": "~1.7", + "phpunit/phpunit": "~6.4", + "pragmarx/trivia": "~0.1", + "squizlabs/php_codesniffer": "^2.3" + }, + "suggest": { + "fzaninotto/faker": "Allows you to get dozens of randomized types", + "pragmarx/trivia": "For the trivia database" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "PragmaRX\\Random\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "homepage": "https://antoniocarlosribeiro.com", + "role": "Developer" + } + ], + "description": "Create random chars, numbers, strings", + "homepage": "https://github.com/antonioribeiro/random", + "keywords": [ + "Randomize", + "faker", + "pragmarx", + "random", + "random number", + "random pattern", + "random string" + ], + "support": { + "issues": "https://github.com/antonioribeiro/random/issues", + "source": "https://github.com/antonioribeiro/random/tree/master" + }, + "time": "2017-11-21T05:26:22+00:00" + }, + { + "name": "pragmarx/recovery", + "version": "v0.2.1", + "source": { + "type": "git", + "url": "https://github.com/antonioribeiro/recovery.git", + "reference": "b5ce4082f059afac6761714a84497816f45271cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antonioribeiro/recovery/zipball/b5ce4082f059afac6761714a84497816f45271cc", + "reference": "b5ce4082f059afac6761714a84497816f45271cc", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "pragmarx/random": "~0.1" + }, + "require-dev": { + "phpunit/phpunit": ">=5.4.3", + "squizlabs/php_codesniffer": "^2.3", + "tightenco/collect": "^5.0" + }, + "suggest": { + "tightenco/collect": "Allows to generate recovery codes as collections" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "PragmaRX\\Recovery\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "homepage": "https://antoniocarlosribeiro.com", + "role": "Developer" + } + ], + "description": "Create recovery codes for two factor auth", + "homepage": "https://github.com/antonioribeiro/recovery", + "keywords": [ + "2fa", + "account recovery", + "auth", + "backup codes", + "google2fa", + "pragmarx", + "recovery", + "recovery codes", + "two factor auth" + ], + "support": { + "issues": "https://github.com/antonioribeiro/recovery/issues", + "source": "https://github.com/antonioribeiro/recovery/tree/v0.2.1" + }, + "time": "2021-08-15T12:26:51+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "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/2.0.2" + }, + "time": "2021-11-05T16:47:00+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.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.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": "https://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" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "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": "PSR-17: 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" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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 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/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.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/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://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/3.0.0" + }, + "time": "2021-10-29T13:26:27+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": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "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/2.1.1" + }, + "time": "2025-03-22T05:38:12+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.9.4", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "75d73f48d02797c2c285a7e9f348fadc0102ffe2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/75d73f48d02797c2c285a7e9f348fadc0102ffe2", + "reference": "75d73f48d02797c2c285a7e9f348fadc0102ffe2", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14 || ^0.15 || ^0.16 || ^0.17 || ^0.18 || ^0.19 || ^0.20 || ^1.0", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "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.9.4" + }, + "time": "2026-09-16T11:39:30+00:00" + }, + { + "name": "sabberworm/php-css-parser", + "version": "v9.4.0", + "source": { + "type": "git", + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", + "reference": "fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f", + "reference": "fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": "^7.2.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", + "thecodingmachine/safe": "^1.3 || ^2.5 || ^3.4" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/extension-installer": "1.4.3", + "phpstan/phpstan": "1.12.33 || 2.2.2", + "phpstan/phpstan-phpunit": "1.4.2 || 2.0.16", + "phpstan/phpstan-strict-rules": "1.6.2 || 2.0.11", + "phpunit/phpunit": "8.5.52", + "rawr/phpunit-data-provider": "3.3.1", + "rector/rector": "1.2.10 || 2.4.6", + "rector/type-perfect": "1.0.0 || 2.1.3", + "squizlabs/php_codesniffer": "4.0.1", + "thecodingmachine/phpstan-safe-rule": "1.2.0 || 1.4.3" + }, + "suggest": { + "ext-mbstring": "for parsing UTF-8 CSS" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.5.x-dev" + } + }, + "autoload": { + "files": [ + "src/Rule/Rule.php", + "src/RuleSet/RuleContainer.php" + ], + "psr-4": { + "Sabberworm\\CSS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Schweikert" + }, + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" + } + ], + "description": "Parser for CSS Files written in PHP", + "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "support": { + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v9.4.0" + }, + "time": "2026-06-18T15:10:53+00:00" + }, + { + "name": "setasign/fpdi", + "version": "v2.6.7", + "source": { + "type": "git", + "url": "https://github.com/Setasign/FPDI.git", + "reference": "388c51e69982a3fc16698710b763e8107a49f510" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/388c51e69982a3fc16698710b763e8107a49f510", + "reference": "388c51e69982a3fc16698710b763e8107a49f510", + "shasum": "" + }, + "require": { + "ext-zlib": "*", + "php": ">=7.2 <=8.5.99999" + }, + "conflict": { + "setasign/tfpdf": "<1.31" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.52", + "setasign/fpdf": "~1.8.6", + "setasign/tfpdf": "~1.33", + "squizlabs/php_codesniffer": "^3.5", + "tecnickcom/tcpdf": "^6.8" + }, + "suggest": { + "setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured." + }, + "type": "library", + "autoload": { + "psr-4": { + "setasign\\Fpdi\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Slabon", + "email": "jan.slabon@setasign.com", + "homepage": "https://www.setasign.com" + }, + { + "name": "Maximilian Kresse", + "email": "maximilian.kresse@setasign.com", + "homepage": "https://www.setasign.com" + } + ], + "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.", + "homepage": "https://www.setasign.com/fpdi", + "keywords": [ + "fpdf", + "fpdi", + "pdf" + ], + "support": { + "issues": "https://github.com/Setasign/FPDI/issues", + "source": "https://github.com/Setasign/FPDI/tree/v2.6.7" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/setasign/fpdi", + "type": "tidelift" + } + ], + "time": "2026-05-13T10:16:22+00:00" + }, + { + "name": "spomky-labs/cbor-php", + "version": "3.4.2", + "source": { + "type": "git", + "url": "https://github.com/Spomky-Labs/cbor-php.git", + "reference": "8f5ea00a07ad529d20886505cdbeb2b9ac7bb2d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/8f5ea00a07ad529d20886505cdbeb2b9ac7bb2d6", + "reference": "8f5ea00a07ad529d20886505cdbeb2b9ac7bb2d6", + "shasum": "" + }, + "require": { + "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17|^0.18|^0.19|^0.20|^1.0", + "ext-mbstring": "*", + "php": ">=8.0", + "symfony/polyfill-php81": "^1.32" + }, + "require-dev": { + "ext-json": "*", + "roave/security-advisories": "dev-latest", + "symfony/error-handler": "^6.4|^7.1|^8.0", + "symfony/var-dumper": "^6.4|^7.1|^8.0" + }, + "suggest": { + "ext-bcmath": "Improves the library performance when ext-gmp is missing, and is required to handle the Big Float and Decimal Fraction Tags (4 and 5)", + "ext-gmp": "Strongly recommended when decoding untrusted input: without it, converting the byte string of a Big Number Tag (2 and 3) is quadratic in its length. Also improves the library performance overall" + }, + "type": "library", + "autoload": { + "psr-4": { + "CBOR\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Florent Morselli", + "homepage": "https://github.com/Spomky" + }, + { + "name": "All contributors", + "homepage": "https://github.com/Spomky-Labs/cbor-php/contributors" + } + ], + "description": "CBOR Encoder/Decoder for PHP", + "keywords": [ + "Concise Binary Object Representation", + "RFC7049", + "cbor" + ], + "support": { + "issues": "https://github.com/Spomky-Labs/cbor-php/issues", + "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.4.2" + }, + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2026-09-15T06:55:29+00:00" + }, + { + "name": "spomky-labs/pki-framework", + "version": "1.6.3", + "source": { + "type": "git", + "url": "https://github.com/Spomky-Labs/pki-framework.git", + "reference": "792e909d4e387adffe3c4f404451c7d57a3d2022" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/792e909d4e387adffe3c4f404451c7d57a3d2022", + "reference": "792e909d4e387adffe3c4f404451c7d57a3d2022", + "shasum": "" + }, + "require": { + "brick/math": "^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17|^0.18|^0.19|^0.20|^1.0", + "ext-mbstring": "*", + "php": ">=8.1" + }, + "require-dev": { + "ekino/phpstan-banned-code": "^1.0|^2.0|^3.0", + "ext-gmp": "*", + "ext-openssl": "*", + "infection/infection": "^0.28|^0.29|^0.31", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/extension-installer": "^1.3|^2.0", + "phpstan/phpstan": "^1.8|^2.0", + "phpstan/phpstan-deprecation-rules": "^1.0|^2.0", + "phpstan/phpstan-phpunit": "^1.1|^2.0", + "phpstan/phpstan-strict-rules": "^1.3|^2.0", + "phpunit/phpunit": "^10.1|^11.0|^12.0", + "rector/rector": "^1.0|^2.0", + "roave/security-advisories": "dev-latest", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symplify/easy-coding-standard": "^12.0 || ^13.0" + }, + "suggest": { + "ext-bcmath": "For better performance (or GMP)", + "ext-gmp": "For better performance (or BCMath)", + "ext-openssl": "For OpenSSL based cyphering", + "ext-sodium": "To verify Ed25519 signatures where the OpenSSL extension has no EdDSA" + }, + "type": "library", + "autoload": { + "psr-4": { + "SpomkyLabs\\Pki\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joni Eskelinen", + "email": "jonieske@gmail.com", + "role": "Original developer" + }, + { + "name": "Florent Morselli", + "email": "florent.morselli@spomky-labs.com", + "role": "Spomky-Labs PKI Framework developer" + } + ], + "description": "A PHP framework for managing Public Key Infrastructures. It comprises X.509 public key certificates, attribute certificates, certification requests and certification path validation.", + "homepage": "https://github.com/spomky-labs/pki-framework", + "keywords": [ + "DER", + "Private Key", + "ac", + "algorithm identifier", + "asn.1", + "asn1", + "attribute certificate", + "certificate", + "certification request", + "cryptography", + "csr", + "decrypt", + "ec", + "encrypt", + "pem", + "pkcs", + "public key", + "rsa", + "sign", + "signature", + "verify", + "x.509", + "x.690", + "x509", + "x690" + ], + "support": { + "issues": "https://github.com/Spomky-Labs/pki-framework/issues", + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.6.3" + }, + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2026-09-12T19:02:49+00:00" + }, + { + "name": "symfony/clock", + "version": "v8.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "701ef4de9705d6c32292ebee5e8044094a09fbf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/701ef4de9705d6c32292ebee5e8044094a09fbf6", + "reference": "701ef4de9705d6c32292ebee5e8044094a09fbf6", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "psr/clock": "^1.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "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": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v8.1.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-29T05:06:50+00:00" + }, + { + "name": "symfony/console", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "4b81146e3ee248ea969186f85499b54fbc78db08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/4b81146e3ee248ea969186f85499b54fbc78db08", + "reference": "4b81146e3ee248ea969186f85499b54fbc78db08", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php85": "^1.32", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.4.6|^8.0.6" + }, + "conflict": { + "symfony/dependency-injection": "<8.1", + "symfony/event-dispatcher": "<8.1" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^8.1", + "symfony/event-dispatcher": "^8.1", + "symfony/filesystem": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0" + }, + "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/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-18T16:00:27+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v8.1.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "08e2905152a39cf3fd1745d83f8c483e258887d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/08e2905152a39cf3fd1745d83f8c483e258887d9", + "reference": "08e2905152a39cf3fd1745d83f8c483e258887d9", + "shasum": "" + }, + "require": { + "php": ">=8.4.1" + }, + "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/v8.1.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-08-23T10:06:25+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.7.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/f3202fa1b5097b0af062dc978b32ecf63404e31d", + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, + "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.7.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-06-05T06:23:12+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v8.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "94f70e1b2e5b7b8f8618871fd9eaad3e39e9f03d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/94f70e1b2e5b7b8f8618871fd9eaad3e39e9f03d", + "reference": "94f70e1b2e5b7b8f8618871fd9eaad3e39e9f03d", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "symfony/css-selector": "^7.4|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "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 DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v8.1.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-08-21T17:47:34+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "c146daceccd5d4f864c051b233c276641cec527b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c146daceccd5d4f864c051b233c276641cec527b", + "reference": "c146daceccd5d4f864c051b233c276641cec527b", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "psr/log": "^1|^2|^3", + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^7.4|^8.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/webpack-encore-bundle": "^1.0|^2.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/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-22T18:58:53+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v8.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "7458da64220376b2e0dc2d8451bf43382c1ad297" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7458da64220376b2e0dc2d8451bf43382c1ad297", + "reference": "7458da64220376b2e0dc2d8451bf43382c1ad297", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/security-http": "<7.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/error-handler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^7.4|^8.0" + }, + "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/v8.1.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-08-21T17:47:34+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.7.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c7de7a00ffb67842132da02ea92988a39ccd9f4e", + "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, + "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.7.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-06-05T06:23:12+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v8.1.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "7599ebb855fede59413ddb7f15198d67bfcae7ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7599ebb855fede59413ddb7f15198d67bfcae7ba", + "reference": "7599ebb855fede59413ddb7f15198d67bfcae7ba", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^7.4|^8.0" + }, + "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/v8.1.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-08-23T10:06:25+00:00" + }, + { + "name": "symfony/finder", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "bd4fed193a3132c91c5c93595cbfc78988915822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/bd4fed193a3132c91c5c93595cbfc78988915822", + "reference": "bd4fed193a3132c91c5c93595cbfc78988915822", + "shasum": "" + }, + "require": { + "php": ">=8.4.1" + }, + "require-dev": { + "symfony/filesystem": "^7.4|^8.0" + }, + "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/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-26T06:33:49+00:00" + }, + { + "name": "symfony/html-sanitizer", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/html-sanitizer.git", + "reference": "c67061a71d3f8b55f899faee3167422efa4db027" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/c67061a71d3f8b55f899faee3167422efa4db027", + "reference": "c67061a71d3f8b55f899faee3167422efa4db027", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "league/uri": "^6.5|^7.0", + "php": ">=8.4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HtmlSanitizer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.", + "homepage": "https://symfony.com", + "keywords": [ + "Purifier", + "html", + "sanitizer" + ], + "support": { + "source": "https://github.com/symfony/html-sanitizer/tree/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-28T08:00:04+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "662f5257658d4f60deff1bc790e9f2c68cb391bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/662f5257658d4f60deff1bc790e9f2c68cb391bf", + "reference": "662f5257658d4f60deff1bc790e9f2c68cb391bf", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" + }, + "conflict": { + "doctrine/dbal": "<4.3" + }, + "require-dev": { + "doctrine/dbal": "^4.3", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^8.0" + }, + "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/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-24T07:13:53+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "51c014e881d8b4ce61e56c0d4105f65b50df786a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/51c014e881d8b4ce61e56c0d4105f65b50df786a", + "reference": "51c014e881d8b4ce61e56c0d4105f65b50df786a", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/dependency-injection": "<8.1", + "symfony/flex": "<2.10", + "symfony/http-client-contracts": "<2.5", + "symfony/serializer": "<7.4.15|>=8.0,<8.0.15|>=8.1,<8.1.2", + "symfony/translation-contracts": "<2.5", + "symfony/var-dumper": "<8.1", + "symfony/web-profiler-bundle": "<8.1", + "twig/twig": "<3.21" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/css-selector": "^7.4|^8.0", + "symfony/dependency-injection": "^8.1", + "symfony/dom-crawler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^8.1", + "symfony/var-exporter": "^7.4|^8.0", + "twig/twig": "^3.21|^4.0" + }, + "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/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-29T14:08:01+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "6f6f2441bef07a42d2617b9b3aadf04a321aa514" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6f6f2441bef07a42d2617b9b3aadf04a321aa514", + "reference": "6f6f2441bef07a42d2617b9b3aadf04a321aa514", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "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": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v7.4.19" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-15T06:01:15+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693", + "reference": "f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.44|^7.4.17|^8.1.5" + }, + "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/v7.4.19" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-04T10:45:44+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.37.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.37.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-10T16:19:22+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "5cac8f4db97208823aa353f59a01faad2da52c75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5cac8f4db97208823aa353f59a01faad2da52c75", + "reference": "5cac8f4db97208823aa353f59a01faad2da52c75", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-25T15:46:47+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "533d68cf99c8f8ee2e8893c59ed59192e92cfd74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/533d68cf99c8f8ee2e8893c59ed59192e92cfd74", + "reference": "533d68cf99c8f8ee2e8893c59ed59192e92cfd74", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-23T14:40:04+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/ebd57ccc7edb93d632e184efbe7693d2517bab3b", + "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-23T22:02:09+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-24T15:19:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74", + "reference": "9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-25T15:50:05+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.38.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/6bfb9c766cacffbc8e118cb87217d08ed84e5cd7", + "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.38.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-26T12:45:58+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/22c6548499cbe5c5bb072fc0c42312dff062a015", + "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "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.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-23T22:01:09+00:00" + }, + { + "name": "symfony/polyfill-php85", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "86a42cbcc07adc331481a5ab310a4024bfc227f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/86a42cbcc07adc331481a5ab310a4024bfc227f6", + "reference": "86a42cbcc07adc331481a5ab310a4024bfc227f6", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "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.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-25T15:46:47+00:00" + }, + { + "name": "symfony/polyfill-php86", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php86.git", + "reference": "8840df45b24f33a49dc419fa18dc0057231ae1d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php86/zipball/8840df45b24f33a49dc419fa18dc0057231ae1d8", + "reference": "8840df45b24f33a49dc419fa18dc0057231ae1d8", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php86\\": "" + }, + "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.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php86/tree/v1.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-25T15:46:47+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "b23ff8245cc5c4479ea2be3d0132d2e6dd433993" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/b23ff8245cc5c4479ea2be3d0132d2e6dd433993", + "reference": "b23ff8245cc5c4479ea2be3d0132d2e6dd433993", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-24T05:20:52+00:00" + }, + { + "name": "symfony/process", + "version": "v7.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "ed0ae095b86994d370d5791612e55984f15aa30e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/ed0ae095b86994d370d5791612e55984f15aa30e", + "reference": "ed0ae095b86994d370d5791612e55984f15aa30e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "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/v7.4.19" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-02T12:38:34+00:00" + }, + { + "name": "symfony/property-access", + "version": "v8.1.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "1a41232c678972b93ce499a504e19ea09dfcd0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/1a41232c678972b93ce499a504e19ea09dfcd0b2", + "reference": "1a41232c678972b93ce499a504e19ea09dfcd0b2", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/property-info": "^7.4.4|^8.0.4" + }, + "require-dev": { + "symfony/cache": "^7.4|^8.0", + "symfony/var-exporter": "^7.4|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "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 functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property-path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/tree/v8.1.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-07-30T12:40:56+00:00" + }, + { + "name": "symfony/property-info", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "fe727d4888a92ac9200a2c1b8e0a995b6022afa7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/fe727d4888a92ac9200a2c1b8e0a995b6022afa7", + "reference": "fe727d4888a92ac9200a2c1b8e0a995b6022afa7", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/string": "^7.4|^8.0", + "symfony/type-info": "^7.4.7|^8.0.7" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1" + }, + "require-dev": { + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "symfony/cache": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "support": { + "source": "https://github.com/symfony/property-info/tree/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-28T19:13:15+00:00" + }, + { + "name": "symfony/routing", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "e46d741c56485441f37104a3e7eace4e17ed91f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/e46d741c56485441f37104a3e7eace4e17ed91f9", + "reference": "e46d741c56485441f37104a3e7eace4e17ed91f9", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0" + }, + "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/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-28T19:13:15+00:00" + }, + { + "name": "symfony/serializer", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "df54c4fe859d945eb633d2c5e6a410ce535f21e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/df54c4fe859d945eb633d2c5e6a410ce535f21e4", + "reference": "df54c4fe859d945eb633d2c5e6a410ce535f21e4", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/property-access": "<8.1", + "symfony/property-info": "<7.4.15", + "symfony/type-info": "<7.4" + }, + "require-dev": { + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "seld/jsonlint": "^1.10", + "symfony/cache": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/error-handler": "^7.4|^8.0", + "symfony/filesystem": "^7.4|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/property-access": "^8.1", + "symfony/property-info": "^7.4.15|~8.0.15|^8.1.2", + "symfony/translation-contracts": "^2.5|^3", + "symfony/type-info": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0", + "symfony/var-exporter": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Serializer\\": "" + }, + "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": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/serializer/tree/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-28T09:40:25+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "15e6a07ec2a2c75ceb1b21dd98105ee8456d2257" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/15e6a07ec2a2c75ceb1b21dd98105ee8456d2257", + "reference": "15e6a07ec2a2c75ceb1b21dd98105ee8456d2257", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "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/v3.7.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-07-27T15:39:01+00:00" + }, + { + "name": "symfony/string", + "version": "v8.1.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "d950140b5f56f31901e5b7a0c04ffc3a3deb943c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/d950140b5f56f31901e5b7a0c04ffc3a3deb943c", + "reference": "d950140b5f56f31901e5b7a0c04ffc3a3deb943c", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-intl-grapheme": "^1.33", + "symfony/polyfill-intl-normalizer": "^1.0", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^7.4|^8.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/v8.1.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-11T14:51:16+00:00" + }, + { + "name": "symfony/translation", + "version": "v8.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "d9e1caba0d6b6f9a26710af8a2f88d37f001215a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/d9e1caba0d6b6f9a26710af8a2f88d37f001215a", + "reference": "d9e1caba0d6b6f9a26710af8a2f88d37f001215a", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation-contracts": "^3.6.1" + }, + "conflict": { + "nikic/php-parser": "<5.0", + "symfony/http-client-contracts": "<2.5", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^7.4|^8.0" + }, + "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/v8.1.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-08-21T17:47:34+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.7.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "ccb206b98faccc511ebae8e5fad50f2dc0b30621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/ccb206b98faccc511ebae8e5fad50f2dc0b30621", + "reference": "ccb206b98faccc511ebae8e5fad50f2dc0b30621", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "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.7.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-06-05T06:23:12+00:00" + }, + { + "name": "symfony/type-info", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/type-info.git", + "reference": "18e1d891f0b8776141f281f7b6f5e67e4df9d9cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/type-info/zipball/18e1d891f0b8776141f281f7b6f5e67e4df9d9cd", + "reference": "18e1d891f0b8776141f281f7b6f5e67e4df9d9cd", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "psr/container": "^1.1|^2.0" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.30" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.30|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", + "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], + "support": { + "source": "https://github.com/symfony/type-info/tree/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-28T19:13:15+00:00" + }, + { + "name": "symfony/uid", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "f412a0b5edd75eb3104a93bd0d11fd2ea3da34e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/f412a0b5edd75eb3104a93bd0d11fd2ea3da34e4", + "reference": "f412a0b5edd75eb3104a93bd0d11fd2ea3da34e4", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-23T17:45:45+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v8.1.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "741a8c4c948b0bb9bd3653daacd3644c73c40ea5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/741a8c4c948b0bb9bd3653daacd3644c73c40ea5", + "reference": "741a8c4c948b0bb9bd3653daacd3644c73c40ea5", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "symfony/console": "<7.4", + "symfony/error-handler": "<7.4" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", + "twig/twig": "^3.12|^4.0" + }, + "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/v8.1.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-03T16:02:27+00:00" + }, + { + "name": "symfony/yaml", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "030e96eed0303223bfca3af9109e9e64830b6ec3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/030e96eed0303223bfca3af9109e9e64830b6ec3", + "reference": "030e96eed0303223bfca3af9109e9e64830b6ec3", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<7.4" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "yaml/yaml-test-suite": "*" + }, + "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/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-26T06:33:49+00:00" + }, + { + "name": "tecnickcom/tcpdf", + "version": "6.11.3", + "source": { + "type": "git", + "url": "https://github.com/tecnickcom/TCPDF.git", + "reference": "b18f6119161019916c5bb07cb8da5205ae5c1b63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/b18f6119161019916c5bb07cb8da5205ae5c1b63", + "reference": "b18f6119161019916c5bb07cb8da5205ae5c1b63", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=7.1.0" + }, + "suggest": { + "ext-gd": "Enables additional image handling in some workflows.", + "ext-imagick": "Enables additional image format support when available.", + "ext-zlib": "Recommended for compressed streams and related features.", + "tecnickcom/tc-lib-pdf": "Modern replacement for TCPDF for new projects." + }, + "type": "library", + "autoload": { + "classmap": [ + "config", + "include", + "tcpdf.php", + "tcpdf_barcodes_1d.php", + "tcpdf_barcodes_2d.php", + "include/tcpdf_colors.php", + "include/tcpdf_filters.php", + "include/tcpdf_font_data.php", + "include/tcpdf_fonts.php", + "include/tcpdf_images.php", + "include/tcpdf_static.php", + "include/barcodes/datamatrix.php", + "include/barcodes/pdf417.php", + "include/barcodes/qrcode.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Nicola Asuni", + "email": "info@tecnick.com", + "role": "lead" + } + ], + "description": "Deprecated legacy PDF engine for PHP. For new projects use tecnickcom/tc-lib-pdf.", + "homepage": "https://tcpdf.org", + "keywords": [ + "PDFD32000-2008", + "TCPDF", + "barcodes", + "datamatrix", + "pdf", + "pdf417", + "qrcode" + ], + "support": { + "issues": "https://github.com/tecnickcom/TCPDF/issues", + "source": "https://github.com/tecnickcom/TCPDF" + }, + "funding": [ + { + "url": "https://www.paypal.com/donate/?hosted_button_id=NZUEC5XS8MFBJ", + "type": "paypal" + } + ], + "time": "2026-04-21T17:00:18+00:00" + }, + { + "name": "thecodingmachine/safe", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/thecodingmachine/safe.git", + "reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/705683a25bacf0d4860c7dea4d7947bfd09eea19", + "reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^10", + "squizlabs/php_codesniffer": "^3.2" + }, + "type": "library", + "autoload": { + "files": [ + "lib/special_cases.php", + "generated/apache.php", + "generated/apcu.php", + "generated/array.php", + "generated/bzip2.php", + "generated/calendar.php", + "generated/classobj.php", + "generated/com.php", + "generated/cubrid.php", + "generated/curl.php", + "generated/datetime.php", + "generated/dir.php", + "generated/eio.php", + "generated/errorfunc.php", + "generated/exec.php", + "generated/fileinfo.php", + "generated/filesystem.php", + "generated/filter.php", + "generated/fpm.php", + "generated/ftp.php", + "generated/funchand.php", + "generated/gettext.php", + "generated/gmp.php", + "generated/gnupg.php", + "generated/hash.php", + "generated/ibase.php", + "generated/ibmDb2.php", + "generated/iconv.php", + "generated/image.php", + "generated/imap.php", + "generated/info.php", + "generated/inotify.php", + "generated/json.php", + "generated/ldap.php", + "generated/libxml.php", + "generated/lzf.php", + "generated/mailparse.php", + "generated/mbstring.php", + "generated/misc.php", + "generated/mysql.php", + "generated/mysqli.php", + "generated/network.php", + "generated/oci8.php", + "generated/opcache.php", + "generated/openssl.php", + "generated/outcontrol.php", + "generated/pcntl.php", + "generated/pcre.php", + "generated/pgsql.php", + "generated/posix.php", + "generated/ps.php", + "generated/pspell.php", + "generated/readline.php", + "generated/rnp.php", + "generated/rpminfo.php", + "generated/rrd.php", + "generated/sem.php", + "generated/session.php", + "generated/shmop.php", + "generated/sockets.php", + "generated/sodium.php", + "generated/solr.php", + "generated/spl.php", + "generated/sqlsrv.php", + "generated/ssdeep.php", + "generated/ssh2.php", + "generated/stream.php", + "generated/strings.php", + "generated/swoole.php", + "generated/uodbc.php", + "generated/uopz.php", + "generated/url.php", + "generated/var.php", + "generated/xdiff.php", + "generated/xml.php", + "generated/xmlrpc.php", + "generated/yaml.php", + "generated/yaz.php", + "generated/zip.php", + "generated/zlib.php" + ], + "classmap": [ + "lib/DateTime.php", + "lib/DateTimeImmutable.php", + "lib/Exceptions/", + "generated/Exceptions/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "support": { + "issues": "https://github.com/thecodingmachine/safe/issues", + "source": "https://github.com/thecodingmachine/safe/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://github.com/OskarStark", + "type": "github" + }, + { + "url": "https://github.com/shish", + "type": "github" + }, + { + "url": "https://github.com/silasjoisten", + "type": "github" + }, + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2026-02-04T18:08:13+00:00" + }, + { + "name": "theiconic/name-parser", + "version": "v1.2.11", + "source": { + "type": "git", + "url": "https://github.com/theiconic/name-parser.git", + "reference": "9a54a713bf5b2e7fd990828147d42de16bf8a253" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theiconic/name-parser/zipball/9a54a713bf5b2e7fd990828147d42de16bf8a253", + "reference": "9a54a713bf5b2e7fd990828147d42de16bf8a253", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "php-mock/php-mock-phpunit": "^2.1", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "TheIconic\\NameParser\\": [ + "src/", + "tests/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "The Iconic", + "email": "engineering@theiconic.com.au" + } + ], + "description": "PHP library for parsing a string containing a full name into its parts", + "support": { + "issues": "https://github.com/theiconic/name-parser/issues", + "source": "https://github.com/theiconic/name-parser/tree/v1.2.11" + }, + "time": "2019-11-14T14:08:48+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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/v2.4.0" + }, + "time": "2025-12-02T11:56:42+00:00" + }, + { + "name": "tpetry/laravel-query-expressions", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/tpetry/laravel-query-expressions.git", + "reference": "e9e6c7e7c570de6820b617868e8073a1fa71f461" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tpetry/laravel-query-expressions/zipball/e9e6c7e7c570de6820b617868e8073a1fa71f461", + "reference": "e9e6c7e7c570de6820b617868e8073a1fa71f461", + "shasum": "" + }, + "require": { + "laravel/framework": "^10.13.1|^11.0|^12.0|^13.0", + "php": "^8.1" + }, + "require-dev": { + "laravel/pint": "^1.0", + "orchestra/testbench": "^8.0|^9.0|^10.0|^11.0", + "pestphp/pest": "^2.28.1|^3.0.0", + "pestphp/pest-plugin-laravel": "^2.2.0|^3.0.0", + "phpstan/phpstan": "^1.11|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tpetry\\QueryExpressions\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "tpetry", + "email": "github@tpetry.me", + "role": "Developer" + } + ], + "description": "Database-independent Query Expressions as a replacement to DB::raw calls", + "homepage": "https://github.com/tpetry/laravel-query-expressions", + "keywords": [ + "database", + "expression", + "laravel", + "query" + ], + "support": { + "issues": "https://github.com/tpetry/laravel-query-expressions/issues", + "source": "https://github.com/tpetry/laravel-query-expressions/tree/1.6.0" + }, + "time": "2026-03-13T08:48:18+00:00" + }, + { + "name": "twig/twig", + "version": "v3.30.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "8c737079b726af72ff8ef3c595be9f6a810ea1ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/8c737079b726af72ff8ef3c595be9f6a810ea1ef", + "reference": "8c737079b726af72ff8ef3c595be9f6a810ea1ef", + "shasum": "" + }, + "require": { + "php": ">=8.1.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "php-cs-fixer/shim": "^3.0@stable", + "phpstan/phpstan": "^2.0@stable", + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/Resources/core.php", + "src/Resources/debug.php", + "src/Resources/escaper.php", + "src/Resources/string_loader.php" + ], + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.30.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2026-09-25T13:20:01+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "301c07936b16d88628b126b01d082ba153cf4c40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/301c07936b16d88628b126b01d082ba153cf4c40", + "reference": "301c07936b16d88628b126b01d082ba153cf4c40", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.10", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-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 `$_ENV` and `$_SERVER` automagically, and optionally to `getenv()`.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.7.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2026-08-24T18:07:49+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "8e1051fe39379367aecf014f41744ce7539a856f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/8e1051fe39379367aecf014f41744ce7539a856f", + "reference": "8e1051fe39379367aecf014f41744ce7539a856f", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpunit/phpunit": "~8.5 || ~9.6 || ~10.5 || ~11.5" + }, + "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": "https://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/2.1.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": "2026-04-26T05:33:54+00:00" + }, + { + "name": "web-auth/cose-lib", + "version": "4.8.2", + "source": { + "type": "git", + "url": "https://github.com/web-auth/cose-lib.git", + "reference": "8849e8bf043a2d42d0bec5bda5db2469ad376148" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/web-auth/cose-lib/zipball/8849e8bf043a2d42d0bec5bda5db2469ad376148", + "reference": "8849e8bf043a2d42d0bec5bda5db2469ad376148", + "shasum": "" + }, + "require": { + "brick/math": "^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14 || ^0.15 || ^0.16 || ^0.17 || ^0.18 || ^0.19 || ^0.20 || ^1.0", + "ext-json": "*", + "ext-openssl": "*", + "php": ">=8.1", + "spomky-labs/pki-framework": "^1.0" + }, + "conflict": { + "spomky-labs/cbor-php": "<3.4.0" + }, + "require-dev": { + "spomky-labs/cbor-php": "^3.4" + }, + "suggest": { + "ext-bcmath": "Recommended: without GMP or BCMath, signing with RSASSA-PSS (PS256/PS384/PS512) blinds its private exponentiation in pure PHP", + "ext-gmp": "Recommended: without GMP or BCMath, signing with RSASSA-PSS (PS256/PS384/PS512) blinds its private exponentiation in pure PHP", + "ext-sodium": "Required by the EdDSA/Ed25519 signature algorithms (-8, -19, -260, -261) and to recompute an OKP public key from its private key", + "spomky-labs/cbor-php": "Required by the RFC 9052 header reader and cryptographic structures. 3.4.0 or later: it ships the six COSE message classes (CBOR\\Tag\\CoseSign1Tag and its siblings) that replace the deprecated Cose\\...Tag classes, and its decoder is what enforces the RFC 9052 label uniqueness and nesting bounds this library relies on" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cose\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Florent Morselli", + "homepage": "https://github.com/Spomky" + }, + { + "name": "All contributors", + "homepage": "https://github.com/web-auth/cose/contributors" + } + ], + "description": "CBOR Object Signing and Encryption (COSE) For PHP", + "homepage": "https://github.com/web-auth", + "keywords": [ + "COSE", + "RFC8152" + ], + "support": { + "issues": "https://github.com/web-auth/cose-lib/issues", + "source": "https://github.com/web-auth/cose-lib/tree/4.8.2" + }, + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2026-09-15T17:30:33+00:00" + }, + { + "name": "web-auth/webauthn-lib", + "version": "5.3.9", + "source": { + "type": "git", + "url": "https://github.com/web-auth/webauthn-lib.git", + "reference": "727e378fb7a36c26be5c911e4a0120c146741ce7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/727e378fb7a36c26be5c911e4a0120c146741ce7", + "reference": "727e378fb7a36c26be5c911e4a0120c146741ce7", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "paragonie/constant_time_encoding": "^2.6|^3.0", + "php": ">=8.2", + "phpdocumentor/reflection-docblock": "^5.3|^6.0", + "psr/clock": "^1.0", + "psr/event-dispatcher": "^1.0", + "psr/log": "^1.0|^2.0|^3.0", + "spomky-labs/cbor-php": "^3.4", + "spomky-labs/pki-framework": "^1.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^3.2", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "web-auth/cose-lib": "^4.8" + }, + "suggest": { + "psr/log-implementation": "Recommended to receive logs from the library", + "symfony/event-dispatcher": "Recommended to use dispatched events", + "web-token/jwt-library": "Mandatory for fetching Metadata Statement from distant sources" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/web-auth/webauthn-framework", + "name": "web-auth/webauthn-framework" + } + }, + "autoload": { + "psr-4": { + "Webauthn\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Florent Morselli", + "homepage": "https://github.com/Spomky" + }, + { + "name": "All contributors", + "homepage": "https://github.com/web-auth/webauthn-library/contributors" + } + ], + "description": "FIDO2/Webauthn Support For PHP", + "homepage": "https://github.com/web-auth", + "keywords": [ + "FIDO2", + "fido", + "webauthn" + ], + "support": { + "source": "https://github.com/web-auth/webauthn-lib/tree/5.3.9" + }, + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2026-09-10T21:10:45+00:00" + }, + { + "name": "webmozart/assert", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "2ccb7c2e821038c03a3e6e1700c570c158c55f70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/2ccb7c2e821038c03a3e6e1700c570c158c55f70", + "reference": "2ccb7c2e821038c03a3e6e1700c570c158c55f70", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", + "php": "^8.2" + }, + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" + }, + "type": "library", + "extra": { + "psalm": { + "pluginClass": "Webmozart\\Assert\\PsalmPlugin" + }, + "branch-alias": { + "dev-master": "2.0-dev", + "dev-feature/2-0": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@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/2.4.1" + }, + "time": "2026-06-15T15:31:57+00:00" + }, + { + "name": "webonyx/graphql-php", + "version": "v15.33.1", + "source": { + "type": "git", + "url": "https://github.com/webonyx/graphql-php.git", + "reference": "e0f40ce40a527ee27413cceced4825aacbc7de5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/e0f40ce40a527ee27413cceced4825aacbc7de5b", + "reference": "e0f40ce40a527ee27413cceced4825aacbc7de5b", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^7.4 || ^8" + }, + "require-dev": { + "amphp/amp": "^2.6 || ^3", + "amphp/http-server": "^2.1 || ^3", + "dms/phpunit-arraysubset-asserts": "dev-master", + "ergebnis/composer-normalize": "^2.28", + "friendsofphp/php-cs-fixer": "3.95.8", + "mll-lab/php-cs-fixer-config": "5.13.0", + "nyholm/psr7": "^1.5", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "2.2.2", + "phpstan/phpstan-phpunit": "2.0.16", + "phpstan/phpstan-strict-rules": "2.0.11", + "phpunit/phpunit": "^9.5 || ^10.5.21 || ^11", + "psr/http-message": "^1 || ^2", + "react/http": "^1.6", + "react/promise": "^2.0 || ^3.0", + "rector/rector": "^2.0", + "symfony/polyfill-php81": "^1.23", + "symfony/var-exporter": "^5 || ^6 || ^7 || ^8", + "thecodingmachine/safe": "^1.3 || ^2 || ^3", + "ticketswap/phpstan-error-formatter": "1.3.0" + }, + "suggest": { + "amphp/amp": "To leverage async resolving on AMPHP platform (v3 with AmpFutureAdapter, v2 with AmpPromiseAdapter)", + "amphp/http-server": "To leverage async resolving with webserver on AMPHP platform", + "psr/http-message": "To use standard GraphQL server", + "react/promise": "To leverage async resolving on React PHP platform" + }, + "type": "library", + "autoload": { + "psr-4": { + "GraphQL\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP port of GraphQL reference implementation", + "homepage": "https://github.com/webonyx/graphql-php", + "keywords": [ + "api", + "graphql" + ], + "support": { + "issues": "https://github.com/webonyx/graphql-php/issues", + "source": "https://github.com/webonyx/graphql-php/tree/v15.33.1" + }, + "funding": [ + { + "url": "https://github.com/spawnia", + "type": "github" + }, + { + "url": "https://opencollective.com/webonyx-graphql-php", + "type": "open_collective" + } + ], + "time": "2026-06-17T06:05:59+00:00" + }, + { + "name": "yiisoft/aliases", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/aliases.git", + "reference": "6f876dbf899f604fd3aefa3b3fd37e2ff2549ead" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/aliases/zipball/6f876dbf899f604fd3aefa3b3fd37e2ff2549ead", + "reference": "6f876dbf899f604fd3aefa3b3fd37e2ff2549ead", + "shasum": "" + }, + "require": { + "php": "8.1 - 8.5" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.3", + "maglnet/composer-require-checker": "^4.7.1", + "phpunit/phpunit": "^10.5.48", + "psr/container": "^2.0.2", + "rector/rector": "^2.1.2", + "spatie/phpunit-watcher": "^1.24.0", + "yiisoft/definitions": "^3.4", + "yiisoft/di": "^1.4", + "yiisoft/test-support": "^3.0.2" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + }, + "config-plugin": { + "di": "di.php", + "params": "params.php" + }, + "config-plugin-options": { + "source-directory": "config" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Aliases\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Named paths and URLs storage", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "alias" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/aliases/issues?state=open", + "source": "https://github.com/yiisoft/aliases", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-12-04T12:53:43+00:00" + }, + { + "name": "yiisoft/arrays", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/arrays.git", + "reference": "8efada90e4fd540b3da476779bc1b7bd9319b62f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/arrays/zipball/8efada90e4fd540b3da476779bc1b7bd9319b62f", + "reference": "8efada90e4fd540b3da476779bc1b7bd9319b62f", + "shasum": "" + }, + "require": { + "php": "8.1 - 8.5", + "yiisoft/strings": "^2.6" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpbench/phpbench": "^1.4.1", + "phpunit/phpunit": "^10.5.48", + "rector/rector": "^2.1.2", + "spatie/phpunit-watcher": "^1.24" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Arrays\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii Array Helper", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "array", + "helper", + "yii" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://forum.yiiframework.com/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/arrays/issues?state=open", + "source": "https://github.com/yiisoft/arrays", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-11-26T12:25:21+00:00" + }, + { + "name": "yiisoft/files", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/files.git", + "reference": "465650fd9e4295669f42ab7e9fec2386700540a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/files/zipball/465650fd9e4295669f42ab7e9fec2386700540a7", + "reference": "465650fd9e4295669f42ab7e9fec2386700540a7", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.5", + "yiisoft/strings": "^2.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.3", + "ext-zlib": "*", + "maglnet/composer-require-checker": "^4.4", + "phpunit/phpunit": "^9.6.22", + "rector/rector": "^2.0.10", + "spatie/phpunit-watcher": "^1.23.6" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Files\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Helper to manage files and directories", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "files" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/files/issues?state=open", + "source": "https://github.com/yiisoft/files", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-12-01T06:30:27+00:00" + }, + { + "name": "yiisoft/html", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/html.git", + "reference": "eeb0bea275c87c4ee0dbc444dbc24fbf44a5aa77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/html/zipball/eeb0bea275c87c4ee0dbc444dbc24fbf44a5aa77", + "reference": "eeb0bea275c87c4ee0dbc444dbc24fbf44a5aa77", + "shasum": "" + }, + "require": { + "php": "8.1 - 8.5", + "yiisoft/arrays": "^2.0 || ^3.0", + "yiisoft/json": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.90", + "infection/infection": "^0.27.11 || ^0.32", + "maglnet/composer-require-checker": "^4.7.1", + "phpunit/phpunit": "^10.5.46", + "rector/rector": "^2.0.17", + "spatie/phpunit-watcher": "^1.24", + "vimeo/psalm": "^5.26.1 || ^6.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "Yiisoft\\Html\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Handy library to generate HTML", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "html" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://forum.yiiframework.com/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/html/issues?state=open", + "source": "https://github.com/yiisoft/html", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2026-06-05T07:38:14+00:00" + }, + { + "name": "yiisoft/i18n", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/i18n.git", + "reference": "028fbcee0ea772dab150d0a8f40344a32e639d3f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/i18n/zipball/028fbcee0ea772dab150d0a8f40344a32e639d3f", + "reference": "028fbcee0ea772dab150d0a8f40344a32e639d3f", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.5" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.3", + "maglnet/composer-require-checker": "^4.4", + "phpunit/phpunit": "^9.6.22", + "rector/rector": "^2.0.10", + "spatie/phpunit-watcher": "^1.23.6" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\I18n\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii Internationalization Library", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "i18n", + "locale" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/i18n/issues?state=open", + "source": "https://github.com/yiisoft/i18n", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-11-29T15:57:19+00:00" + }, + { + "name": "yiisoft/json", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/json.git", + "reference": "6af88ed2c653f4b6cbe3ea9114e4aebc5a463c80" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/json/zipball/6af88ed2c653f4b6cbe3ea9114e4aebc5a463c80", + "reference": "6af88ed2c653f4b6cbe3ea9114e4aebc5a463c80", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-simplexml": "*", + "php": "~7.4.0 || 8.0 - 8.5" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "maglnet/composer-require-checker": "^3.8 || ^4.2", + "phpunit/phpunit": "^9.6.22", + "rector/rector": "^2.0.8", + "spatie/phpunit-watcher": "^1.23.6" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Json\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii JSON encoding and decoding", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "json" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/json/issues?state=open", + "source": "https://github.com/yiisoft/json", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-11-21T19:39:36+00:00" + }, + { + "name": "yiisoft/strings", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/strings.git", + "reference": "9bc7fea56374619cccd4587848029fe97f98bb33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/strings/zipball/9bc7fea56374619cccd4587848029fe97f98bb33", + "reference": "9bc7fea56374619cccd4587848029fe97f98bb33", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "8.1 - 8.5" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "maglnet/composer-require-checker": "^4.7.1", + "phpbench/phpbench": "^1.4.1", + "phpunit/phpunit": "^10.5.48", + "rector/rector": "^2.1.2", + "spatie/phpunit-watcher": "^1.24" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Strings\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii Strings Helper", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "helper", + "string", + "yii" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/strings/issues?state=open", + "source": "https://github.com/yiisoft/strings", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-11-23T18:00:58+00:00" + }, + { + "name": "yiisoft/translator", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/translator.git", + "reference": "62c64c9009a570597cc31dd42ff951d74049a60b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/translator/zipball/62c64c9009a570597cc31dd42ff951d74049a60b", + "reference": "62c64c9009a570597cc31dd42ff951d74049a60b", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.5", + "psr/event-dispatcher": "1.0.0", + "yiisoft/files": "^1.0 || ^2.0", + "yiisoft/i18n": "^1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.3", + "maglnet/composer-require-checker": "^4.4", + "phpunit/phpunit": "^9.6.29", + "rector/rector": "^2.1.7", + "spatie/phpunit-watcher": "^1.23.6", + "yiisoft/di": "^1.2.1" + }, + "suggest": { + "ext-intl": "Allows using intl message formatter", + "ext-tokenizer": "Allows using message extraction", + "yiisoft/event-dispatcher": "To listen for events about missing categories and messages" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + }, + "config-plugin": { + "di": "di.php", + "params": "params.php" + }, + "config-plugin-options": { + "source-directory": "config" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Translator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii Message Translator", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "i18n", + "internationalization", + "translation" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/translator/issues?state=open", + "source": "https://github.com/yiisoft/translator", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-12-06T05:18:44+00:00" + }, + { + "name": "yiisoft/translator-message-php", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/translator-message-php.git", + "reference": "ef597d4df3d991ba4d7e9feb98d818870e8c747a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/translator-message-php/zipball/ef597d4df3d991ba4d7e9feb98d818870e8c747a", + "reference": "ef597d4df3d991ba4d7e9feb98d818870e8c747a", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.5", + "yiisoft/translator": "1.0 - 3" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.3", + "maglnet/composer-require-checker": "^4.4", + "phpunit/phpunit": "^9.6.22", + "rector/rector": "^2.0.10", + "spatie/phpunit-watcher": "^1.23.6" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Translator\\Message\\Php\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii Translator PHP Message Storage", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "formatting", + "i18n", + "internationalization", + "message storage" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/translator-message-php/issues?state=open", + "source": "https://github.com/yiisoft/translator-message-php", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-12-06T14:38:12+00:00" + } + ], + "packages-dev": [ + { + "name": "brianium/paratest", + "version": "v7.20.0", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "81c80677c9ec0ed4ef16b246167f11dec81a6e3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/81c80677c9ec0ed4ef16b246167f11dec81a6e3d", + "reference": "81c80677c9ec0ed4ef16b246167f11dec81a6e3d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^1.3.0", + "jean85/pretty-package-versions": "^2.1.1", + "php": "~8.3.0 || ~8.4.0 || ~8.5.0", + "phpunit/php-code-coverage": "^12.5.3 || ^13.0.1", + "phpunit/php-file-iterator": "^6.0.1 || ^7", + "phpunit/php-timer": "^8 || ^9", + "phpunit/phpunit": "^12.5.14 || ^13.0.5", + "sebastian/environment": "^8.0.3 || ^9", + "symfony/console": "^7.4.7 || ^8.0.7", + "symfony/process": "^7.4.5 || ^8.0.5" + }, + "require-dev": { + "doctrine/coding-standard": "^14.0.0", + "ext-pcntl": "*", + "ext-pcov": "*", + "ext-posix": "*", + "phpstan/phpstan": "^2.1.44", + "phpstan/phpstan-deprecation-rules": "^2.0.4", + "phpstan/phpstan-phpunit": "^2.0.16", + "phpstan/phpstan-strict-rules": "^2.0.10", + "symfony/filesystem": "^7.4.6 || ^8.0.6" + }, + "bin": [ + "bin/paratest", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.20.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2026-03-29T15:46:14+00:00" + }, + { + "name": "cebe/markdown", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/cebe/markdown.git", + "reference": "9bac5e971dd391e2802dca5400bbeacbaea9eb86" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cebe/markdown/zipball/9bac5e971dd391e2802dca5400bbeacbaea9eb86", + "reference": "9bac5e971dd391e2802dca5400bbeacbaea9eb86", + "shasum": "" + }, + "require": { + "lib-pcre": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "cebe/indent": "*", + "facebook/xhprof": "*@dev", + "phpunit/phpunit": "4.1.*" + }, + "bin": [ + "bin/markdown" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "cebe\\markdown\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Carsten Brandt", + "email": "mail@cebe.cc", + "homepage": "http://cebe.cc/", + "role": "Creator" + } + ], + "description": "A super fast, highly extensible markdown parser for PHP", + "homepage": "https://github.com/cebe/markdown#readme", + "keywords": [ + "extensible", + "fast", + "gfm", + "markdown", + "markdown-extra" + ], + "support": { + "issues": "https://github.com/cebe/markdown/issues", + "source": "https://github.com/cebe/markdown" + }, + "time": "2018-03-26T11:24:36+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", + "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", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + }, + "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": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" + }, + "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": "2024-05-06T16:37:16+00:00" + }, + { + "name": "craftcms/ecs", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://github.com/craftcms/ecs.git", + "reference": "3823f989668e12a85ba681f8c7f3fd8488e23066" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/ecs/zipball/3823f989668e12a85ba681f8c7f3fd8488e23066", + "reference": "3823f989668e12a85ba681f8c7f3fd8488e23066", + "shasum": "" + }, + "require": { + "php": "^7.2.5|^8.0.2", + "symplify/easy-coding-standard": "^10.3.3" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-4": { + "craft\\ecs\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "description": "Easy Coding Standard configurations for Craft CMS projects", + "support": { + "issues": "https://github.com/craftcms/ecs/issues", + "source": "https://github.com/craftcms/ecs/tree/main" + }, + "time": "2024-08-07T21:54:45+00:00" + }, + { + "name": "craftcms/yii2-adapter", + "version": "6.x-dev", + "dist": { + "type": "path", + "url": "/tmp/packages/cms-6/yii2-adapter", + "reference": "78780e3e74dbaaba7c8727ed6354c1a79981c17e" + }, + "require": { + "craftcms/cms": "self.version", + "creocoder/yii2-nested-sets": "~0.9.0", + "ext-bcmath": "*", + "ext-curl": "*", + "ext-dom": "*", + "ext-intl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-pcre": "*", + "ext-pdo": "*", + "ext-zip": "*", + "mikehaertl/php-shellcommand": "^1.6.3", + "php": "^8.5", + "samdark/yii2-psr-log-target": "^1.1.3", + "seld/cli-prompt": "^1.0.4", + "thamtech/yii2-ratelimiter-advanced": "^0.5.0", + "voku/portable-ascii": "^2.0", + "yiisoft/yii2": "~2.0.55.0", + "yiisoft/yii2-debug": "~2.1.27.0", + "yiisoft/yii2-queue": "~2.3.2", + "yiisoft/yii2-symfonymailer": "^4.0.0" + }, + "provide": { + "bower-asset/inputmask": "5.0.9", + "bower-asset/jquery": "3.6.1", + "bower-asset/punycode": "^2.2", + "bower-asset/yii2-pjax": "~2.0.1", + "yii2tech/ar-softdelete": "1.0.4" + }, + "require-dev": { + "codeception/codeception": "^5.2.0", + "codeception/lib-innerbrowser": "4.0.6", + "codeception/module-asserts": "^3.0.0", + "codeception/module-datafactory": "^3.0.0", + "codeception/module-phpbrowser": "^3.0.0", + "codeception/module-rest": "^3.3.2", + "codeception/module-yii2": "^1.1.9", + "craftcms/ecs": "dev-main", + "dg/bypass-finals": "^1.9", + "larastan/larastan": "^3.12", + "laravel/socialite": "^5.25", + "league/factory-muffin": "^3.3.0", + "orchestra/testbench": "^11.0", + "pestphp/pest": "^4.0", + "phpstan/phpstan": "^2.1", + "rector/rector": "^2.0", + "vlucas/phpdotenv": "^5.4.1", + "yiisoft/yii2-redis": "^2.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "CraftCms\\Yii2Adapter\\Yii2ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "craft\\": "legacy/", + "CraftCms\\Cms\\": "constants/", + "CraftCms\\Yii2Adapter\\": "src/", + "yii2tech\\ar\\softdelete\\": "lib/ar-softdelete/src/" + }, + "files": [ + "src/Helpers/Queries.php" + ] + }, + "autoload-dev": { + "psr-4": { + "CraftCms\\Cms\\Database\\": "../database/", + "CraftCms\\Cms\\Tests\\": "../tests/", + "CraftCms\\Yii2Adapter\\Tests\\": "tests-laravel/", + "crafttests\\": "tests/" + } + }, + "scripts": { + "copy-icons": [ + "php ./scripts/copyicons.php" + ], + "check-cs": [ + "ecs check --ansi" + ], + "fix-cs": [ + "ecs check --ansi --fix" + ], + "codecept-build": [ + "codecept build" + ], + "phpstan": [ + "phpstan --memory-limit=2G" + ], + "rector": [ + "rector" + ], + "tests-adapter": [ + "./vendor/bin/pest --configuration ./phpunit.xml.dist --test-directory ./tests-laravel" + ] + }, + "license": [ + "proprietary" + ], + "authors": [ + { + "name": "Pixel & Tonic", + "homepage": "https://pixelandtonic.com/" + } + ], + "description": "Craft CMS Yii2 adapter", + "homepage": "https://craftcms.com", + "keywords": [ + "cms", + "craftcms", + "yii2" + ], + "support": { + "email": "support@craftcms.com", + "issues": "https://github.com/craftcms/cms/issues?state=open", + "forum": "https://craftcms.stackexchange.com/", + "source": "https://github.com/craftcms/cms", + "docs": "https://craftcms.com/docs/5.x/", + "rss": "https://github.com/craftcms/cms/releases.atom" + }, + "transport-options": { + "symlink": true, + "relative": false + } + }, + { + "name": "creocoder/yii2-nested-sets", + "version": "0.9.0", + "source": { + "type": "git", + "url": "https://github.com/creocoder/yii2-nested-sets.git", + "reference": "cb8635a459b6246e5a144f096b992dcc30cf9954" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/creocoder/yii2-nested-sets/zipball/cb8635a459b6246e5a144f096b992dcc30cf9954", + "reference": "cb8635a459b6246e5a144f096b992dcc30cf9954", + "shasum": "" + }, + "require": { + "yiisoft/yii2": "*" + }, + "type": "yii2-extension", + "autoload": { + "psr-4": { + "creocoder\\nestedsets\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Alexander Kochetov", + "email": "creocoder@gmail.com" + } + ], + "description": "The nested sets behavior for the Yii framework", + "keywords": [ + "nested sets", + "yii2" + ], + "support": { + "issues": "https://github.com/creocoder/yii2-nested-sets/issues", + "source": "https://github.com/creocoder/yii2-nested-sets/tree/master" + }, + "time": "2015-01-27T10:53:51+00:00" + }, + { + "name": "dg/bypass-finals", + "version": "v1.10.1", + "source": { + "type": "git", + "url": "https://github.com/dg/bypass-finals.git", + "reference": "62d4ea18f8937af7d794b3358c125ecb52862e98" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dg/bypass-finals/zipball/62d4ea18f8937af7d794b3358c125ecb52862e98", + "reference": "62d4ea18f8937af7d794b3358c125ecb52862e98", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "nette/tester": "^2.3", + "phpstan/phpstan": "^0.12" + }, + "type": "library", + "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" + } + ], + "description": "Removes final keyword from source code on-the-fly and allows mocking of final methods and classes", + "keywords": [ + "finals", + "mocking", + "phpunit", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/dg/bypass-finals/issues", + "source": "https://github.com/dg/bypass-finals/tree/v1.10.1" + }, + "time": "2026-06-04T15:48:46+00:00" + }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.19.1", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "5e0539132d934f936fbae2c88b55d58f9438623f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/5e0539132d934f936fbae2c88b55d58f9438623f", + "reference": "5e0539132d934f936fbae2c88b55d58f9438623f", + "shasum": "" + }, + "require": { + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" + }, + "require-dev": { + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.1" + }, + "time": "2026-09-15T15:42:51+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.24.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "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" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" + }, + "time": "2024-11-21T13:46:39+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2025-08-14T07:29:31+00:00" + }, + { + "name": "filp/whoops", + "version": "2.18.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^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.18.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-08-08T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.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.1.1" + }, + "time": "2025-04-30T06:54:44+00:00" + }, + { + "name": "iamcal/sql-parser", + "version": "v0.7", + "source": { + "type": "git", + "url": "https://github.com/iamcal/SQLParser.git", + "reference": "610392f38de49a44dab08dc1659960a29874c4b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/610392f38de49a44dab08dc1659960a29874c4b8", + "reference": "610392f38de49a44dab08dc1659960a29874c4b8", + "shasum": "" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^1.0", + "phpunit/phpunit": "^5|^6|^7|^8|^9" + }, + "type": "library", + "autoload": { + "psr-4": { + "iamcal\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cal Henderson", + "email": "cal@iamcal.com" + } + ], + "description": "MySQL schema parser", + "support": { + "issues": "https://github.com/iamcal/SQLParser/issues", + "source": "https://github.com/iamcal/SQLParser/tree/v0.7" + }, + "time": "2026-01-28T22:20:33+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "rector/rector": "^2.0", + "vimeo/psalm": "^4.3 || ^5.0" + }, + "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.1.1" + }, + "time": "2025-03-19T14:43:43+00:00" + }, + { + "name": "larastan/larastan", + "version": "v3.10.0", + "source": { + "type": "git", + "url": "https://github.com/larastan/larastan.git", + "reference": "2970f83398154178a739609c244577267c7ee8eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/larastan/larastan/zipball/2970f83398154178a739609c244577267c7ee8eb", + "reference": "2970f83398154178a739609c244577267c7ee8eb", + "shasum": "" + }, + "require": { + "ext-json": "*", + "iamcal/sql-parser": "^0.7.0", + "illuminate/console": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/container": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/contracts": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/database": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/http": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/pipeline": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/support": "^11.44.2 || ^12.4.1 || ^13", + "php": "^8.2", + "phpstan/phpstan": "^2.2.0" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "laravel/framework": "^11.44.2 || ^12.7.2 || ^13", + "mockery/mockery": "^1.6.12", + "nikic/php-parser": "^5.4", + "orchestra/canvas": "^v9.2.2 || ^10.0.1 || ^11", + "orchestra/testbench-core": "^9.12.0 || ^10.1 || ^11", + "phpstan/phpstan-deprecation-rules": "^2.0.1", + "phpunit/phpunit": "^10.5.35 || ^11.5.15 || ^12.5.8 || ^13.1.8" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench", + "phpmyadmin/sql-parser": "Install to enable Larastan's optional phpMyAdmin-based SQL parser automatically" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Larastan\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Can Vural", + "email": "can9119@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/larastan/larastan/issues", + "source": "https://github.com/larastan/larastan/tree/v3.10.0" + }, + "funding": [ + { + "url": "https://github.com/canvural", + "type": "github" + } + ], + "time": "2026-05-28T08:00:58+00:00" + }, + { + "name": "laravel/pail", + "version": "v1.2.7", + "source": { + "type": "git", + "url": "https://github.com/laravel/pail.git", + "reference": "2f7d27dada8effc48b8c424445a69cca7007daaa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pail/zipball/2f7d27dada8effc48b8c424445a69cca7007daaa", + "reference": "2f7d27dada8effc48b8c424445a69cca7007daaa", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/console": "^10.24|^11.0|^12.0|^13.0", + "illuminate/contracts": "^10.24|^11.0|^12.0|^13.0", + "illuminate/log": "^10.24|^11.0|^12.0|^13.0", + "illuminate/process": "^10.24|^11.0|^12.0|^13.0", + "illuminate/support": "^10.24|^11.0|^12.0|^13.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0|^8.0" + }, + "require-dev": { + "laravel/framework": "^10.24|^11.0|^12.0|^13.0", + "laravel/pint": "^1.13", + "orchestra/testbench-core": "^8.13|^9.17|^10.8|^11.0", + "pestphp/pest": "^2.20|^3.0|^4.0", + "pestphp/pest-plugin-type-coverage": "^2.3|^3.0|^4.0", + "phpstan/phpstan": "^1.12.27", + "symfony/var-dumper": "^6.3|^7.0|^8.0", + "symfony/yaml": "^6.3|^7.0|^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Pail\\PailServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Pail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Easily delve into your Laravel application's log files directly from the command line.", + "homepage": "https://github.com/laravel/pail", + "keywords": [ + "dev", + "laravel", + "logs", + "php", + "tail" + ], + "support": { + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" + }, + "time": "2026-05-20T22:24:57+00:00" + }, + { + "name": "laravel/tinker", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "4faba77764bd33411735936acdf30446d058c78b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/4faba77764bd33411735936acdf30446d058c78b", + "reference": "4faba77764bd33411735936acdf30446d058c78b", + "shasum": "" + }, + "require": { + "illuminate/console": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "php": "^8.1", + "psy/psysh": "^0.12.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0|^8.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5|^11.5" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^8.0|^9.0|^10.0|^11.0|^12.0|^13.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "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/v3.0.2" + }, + "time": "2026-03-17T14:54:13+00:00" + }, + { + "name": "league/factory-muffin", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/factory-muffin.git", + "reference": "62c8c31d47667523da14e83df36cc897d34173cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/factory-muffin/zipball/62c8c31d47667523da14e83df36cc897d34173cd", + "reference": "62c8c31d47667523da14e83df36cc897d34173cd", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "replace": { + "zizaco/factory-muff": "self.version" + }, + "require-dev": { + "doctrine/orm": "^2.5", + "illuminate/database": "5.0.* || 5.1.* || 5.5.* || ^6.0", + "league/factory-muffin-faker": "^2.3", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20" + }, + "suggest": { + "doctrine/orm": "Factory Muffin supports doctrine through the repository store.", + "illuminate/database": "Factory Muffin supports eloquent through the model store.", + "league/factory-muffin-faker": "Factory Muffin is very powerful together with faker." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "League\\FactoryMuffin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + }, + { + "name": "Scott Robertson", + "email": "scottymeuk@gmail.com" + } + ], + "description": "The goal of this package is to enable the rapid creation of objects for the purpose of testing.", + "homepage": "http://factory-muffin.thephpleague.com/", + "keywords": [ + "factory", + "testing" + ], + "support": { + "issues": "https://github.com/thephpleague/factory-muffin/issues", + "source": "https://github.com/thephpleague/factory-muffin/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/factory-muffin", + "type": "tidelift" + } + ], + "time": "2020-12-13T18:38:47+00:00" + }, + { + "name": "mikehaertl/php-shellcommand", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/mikehaertl/php-shellcommand.git", + "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mikehaertl/php-shellcommand/zipball/e79ea528be155ffdec6f3bf1a4a46307bb49e545", + "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545", + "shasum": "" + }, + "require": { + "php": ">= 5.3.0" + }, + "require-dev": { + "phpunit/phpunit": ">4.0 <=9.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "mikehaertl\\shellcommand\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Härtl", + "email": "haertl.mike@gmail.com" + } + ], + "description": "An object oriented interface to shell commands", + "keywords": [ + "shell" + ], + "support": { + "issues": "https://github.com/mikehaertl/php-shellcommand/issues", + "source": "https://github.com/mikehaertl/php-shellcommand/tree/1.7.0" + }, + "time": "2023-04-19T08:25:22+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.12", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "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": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2024-05-16T03:13:13+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.14.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae", + "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae", + "shasum": "" + }, + "require": { + "php": "^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", + "phpspec/prophecy": "^1.10", + "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.14.0" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + } + ], + "time": "2026-08-11T10:17:44+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.9.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9e33da9553fe7786f0962b35f4e4ecf01be89def", + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-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/v5.9.0" + }, + "time": "2026-09-13T18:51:52+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v8.9.4", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "716af8f95a470e9094cfca09ed897b023be191a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/716af8f95a470e9094cfca09ed897b023be191a5", + "reference": "716af8f95a470e9094cfca09ed897b023be191a5", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.18.4", + "nunomaduro/termwind": "^2.4.0", + "php": "^8.2.0", + "symfony/console": "^7.4.8 || ^8.0.8" + }, + "conflict": { + "laravel/framework": "<11.48.0 || >=14.0.0", + "phpunit/phpunit": "<11.5.50 || >=14.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.8.5", + "larastan/larastan": "^3.9.6", + "laravel/framework": "^11.48.0 || ^12.56.0 || ^13.5.0", + "laravel/pint": "^1.29.1", + "orchestra/testbench-core": "^9.12.0 || ^10.12.1 || ^11.2.1", + "pestphp/pest": "^3.8.5 || ^4.4.3 || ^5.0.0", + "sebastian/environment": "^7.2.1 || ^8.0.4 || ^9.3.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "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", + "dev", + "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": "2026-04-21T14:04:20+00:00" + }, + { + "name": "orchestra/canvas", + "version": "v11.0.1", + "source": { + "type": "git", + "url": "https://github.com/orchestral/canvas.git", + "reference": "d240410f4cd89b380d7d89b5bbaf60c32f4fb691" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/canvas/zipball/d240410f4cd89b380d7d89b5bbaf60c32f4fb691", + "reference": "d240410f4cd89b380d7d89b5bbaf60c32f4fb691", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "composer/semver": "^3.0", + "illuminate/console": "^13.0.0", + "illuminate/database": "^13.0.0", + "illuminate/filesystem": "^13.0.0", + "illuminate/support": "^13.0.0", + "orchestra/canvas-core": "^11.0.0", + "orchestra/sidekick": "~1.1.23|~1.2.20", + "orchestra/testbench-core": "^11.0.0", + "php": "^8.3", + "symfony/yaml": "^7.4.0|^8.0.0" + }, + "require-dev": { + "laravel/framework": "^13.0.0", + "laravel/pint": "^1.24", + "mockery/mockery": "^1.6.10", + "phpstan/phpstan": "^2.1.14", + "phpunit/phpunit": "^11.5.50|^12.5.8|^13.0.0" + }, + "bin": [ + "canvas" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Orchestra\\Canvas\\LaravelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Orchestra\\Canvas\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" + } + ], + "description": "Code Generators for Laravel Applications and Packages", + "support": { + "issues": "https://github.com/orchestral/canvas/issues", + "source": "https://github.com/orchestral/canvas/tree/v11.0.1" + }, + "time": "2026-03-18T22:46:12+00:00" + }, + { + "name": "orchestra/canvas-core", + "version": "v11.0.0", + "source": { + "type": "git", + "url": "https://github.com/orchestral/canvas-core.git", + "reference": "88d091ff989748e2ca447bca0cd06ab14671ba82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/canvas-core/zipball/88d091ff989748e2ca447bca0cd06ab14671ba82", + "reference": "88d091ff989748e2ca447bca0cd06ab14671ba82", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "composer/semver": "^3.0", + "illuminate/console": "^13.0", + "illuminate/support": "^13.0", + "orchestra/sidekick": "~1.1.23|~1.2.20", + "php": "^8.3" + }, + "require-dev": { + "laravel/framework": "^13.0", + "laravel/pint": "^1.24", + "mockery/mockery": "^1.6.10", + "orchestra/testbench-core": "^11.0", + "phpstan/phpstan": "^2.1.17", + "phpunit/phpunit": "^11.5.50|^12.5.8|^13.0.0", + "symfony/yaml": "^7.4|^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Orchestra\\Canvas\\Core\\LaravelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Orchestra\\Canvas\\Core\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" + } + ], + "description": "Code Generators Builder for Laravel Applications and Packages", + "support": { + "issues": "https://github.com/orchestral/canvas/issues", + "source": "https://github.com/orchestral/canvas-core/tree/v11.0.0" + }, + "time": "2026-03-16T15:10:50+00:00" + }, + { + "name": "orchestra/sidekick", + "version": "v1.2.20", + "source": { + "type": "git", + "url": "https://github.com/orchestral/sidekick.git", + "reference": "267a71b56cb2fe1a634d69fc99889c671b77ff43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/sidekick/zipball/267a71b56cb2fe1a634d69fc99889c671b77ff43", + "reference": "267a71b56cb2fe1a634d69fc99889c671b77ff43", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "composer/semver": "^3.0", + "php": "^8.1", + "symfony/polyfill-php83": "^1.32" + }, + "require-dev": { + "fakerphp/faker": "^1.21", + "laravel/framework": "^10.48.29|^11.44.7|^12.1.1|^13.0", + "laravel/pint": "^1.4", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^8.37.0|^9.14.0|^10.2.0|^11.0", + "phpstan/phpstan": "^2.1.14", + "phpunit/phpunit": "^10.0|^11.0|^12.0", + "symfony/process": "^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/Eloquent/functions.php", + "src/Filesystem/functions.php", + "src/Http/functions.php", + "src/functions.php" + ], + "psr-4": { + "Orchestra\\Sidekick\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" + } + ], + "description": "Packages Toolkit Utilities and Helpers for Laravel", + "support": { + "issues": "https://github.com/orchestral/sidekick/issues", + "source": "https://github.com/orchestral/sidekick/tree/v1.2.20" + }, + "time": "2026-01-12T11:09:33+00:00" + }, + { + "name": "orchestra/testbench", + "version": "v11.1.0", + "source": { + "type": "git", + "url": "https://github.com/orchestral/testbench.git", + "reference": "997f33e5200c7e8db4756b35a9deb3f5f3086759" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/997f33e5200c7e8db4756b35a9deb3f5f3086759", + "reference": "997f33e5200c7e8db4756b35a9deb3f5f3086759", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "fakerphp/faker": "^1.23", + "laravel/framework": "^13.1.1", + "mockery/mockery": "^1.6.10", + "orchestra/testbench-core": "^11.2.0", + "orchestra/workbench": "^11.0.1", + "php": "^8.3", + "phpunit/phpunit": "^11.5.50|^12.5.8|^13.0.0", + "symfony/process": "^7.4.5|^8.0.5", + "symfony/yaml": "^7.4|^8.0", + "vlucas/phpdotenv": "^5.6.1" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" + } + ], + "description": "Laravel Testing Helper for Packages Development", + "homepage": "https://packages.tools/testbench/", + "keywords": [ + "BDD", + "TDD", + "dev", + "laravel", + "laravel-packages", + "testing" + ], + "support": { + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench/tree/v11.1.0" + }, + "time": "2026-04-09T05:11:06+00:00" + }, + { + "name": "orchestra/testbench-core", + "version": "v11.3.4", + "source": { + "type": "git", + "url": "https://github.com/orchestral/testbench-core.git", + "reference": "527fe9941b8bdec2914d2a19048b0c40c6c5d87c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/527fe9941b8bdec2914d2a19048b0c40c6c5d87c", + "reference": "527fe9941b8bdec2914d2a19048b0c40c6c5d87c", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "orchestra/sidekick": "~1.1.23|~1.2.20", + "php": "^8.3", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-php84": "^1.34.0" + }, + "conflict": { + "brianium/paratest": "<7.3.0|>=8.0.0", + "laravel/framework": "<13.10.0|>=14.0.0", + "laravel/serializable-closure": ">=2.0.0 <2.0.10|>=3.0.0", + "nunomaduro/collision": "<8.9.0|>=9.0.0", + "phpunit/phpunit": "<11.5.50|>=12.0.0 <12.5.8|>=13.2.0" + }, + "require-dev": { + "fakerphp/faker": "^1.24", + "laravel/framework": "^13.10.0", + "laravel/pint": "^1.24", + "laravel/serializable-closure": "^2.0.10", + "mockery/mockery": "^1.6.10", + "phpstan/phpstan": "^2.1.38", + "phpunit/phpunit": "^11.5.50|^12.5.8|^13.0.0", + "spatie/laravel-ray": "^1.43.6", + "symfony/process": "^7.4.5|^8.0.5", + "symfony/yaml": "^7.4.0|^8.0.0", + "vlucas/phpdotenv": "^5.6.1" + }, + "suggest": { + "brianium/paratest": "Allow using parallel testing (^7.3).", + "ext-pcntl": "Required to use all features of the console signal trapping.", + "fakerphp/faker": "Allow using Faker for testing (^1.23).", + "laravel/framework": "Required for testing (^13.9.0).", + "mockery/mockery": "Allow using Mockery for testing (^1.6).", + "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^8.9).", + "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^11.0).", + "phpunit/phpunit": "Allow using PHPUnit for testing (^11.5.50|^12.5.8|^13.0.0).", + "symfony/process": "Required to use Orchestra\\Testbench\\remote function (^7.4|^8.0).", + "symfony/yaml": "Required for Testbench CLI (^7.4|^8.0).", + "vlucas/phpdotenv": "Required for Testbench CLI (^5.6.1)." + }, + "bin": [ + "testbench" + ], + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Orchestra\\Testbench\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" + } + ], + "description": "Testing Helper for Laravel Development", + "homepage": "https://packages.tools/testbench", + "keywords": [ + "BDD", + "TDD", + "dev", + "laravel", + "laravel-packages", + "testing" + ], + "support": { + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench-core" + }, + "time": "2026-06-02T03:43:15+00:00" + }, + { + "name": "orchestra/workbench", + "version": "v11.1.0", + "source": { + "type": "git", + "url": "https://github.com/orchestral/workbench.git", + "reference": "e750c7bcae4405e054ff286475502e23274de04b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/workbench/zipball/e750c7bcae4405e054ff286475502e23274de04b", + "reference": "e750c7bcae4405e054ff286475502e23274de04b", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "fakerphp/faker": "^1.23", + "laravel/framework": "^13.0.0", + "laravel/pail": "^1.2.5", + "laravel/tinker": "^3.0.0", + "nunomaduro/collision": "^8.9", + "orchestra/canvas": "^11.0.1", + "orchestra/sidekick": "~1.1.23|~1.2.20", + "orchestra/testbench-core": "^11.1.0", + "php": "^8.3", + "symfony/process": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0" + }, + "require-dev": { + "laravel/pint": "^1.22.0", + "mockery/mockery": "^1.6.12", + "phpstan/phpstan": "^2.1.33", + "phpunit/phpunit": "^11.5.50|^12.5.8|^13.0.0", + "spatie/laravel-ray": "^1.43.6" + }, + "suggest": { + "ext-pcntl": "Required to use all features of the console signal trapping." + }, + "type": "library", + "autoload": { + "psr-4": { + "Orchestra\\Workbench\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" + } + ], + "description": "Workbench Companion for Laravel Packages Development", + "keywords": [ + "dev", + "laravel", + "laravel-packages", + "testing" + ], + "support": { + "issues": "https://github.com/orchestral/workbench/issues", + "source": "https://github.com/orchestral/workbench/tree/v11.1.0" + }, + "time": "2026-03-24T23:09:55+00:00" + }, + { + "name": "pestphp/pest", + "version": "v4.7.2", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest.git", + "reference": "40b88b62ef8a7c6fcae5fc28f1fa747f601c131b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest/zipball/40b88b62ef8a7c6fcae5fc28f1fa747f601c131b", + "reference": "40b88b62ef8a7c6fcae5fc28f1fa747f601c131b", + "shasum": "" + }, + "require": { + "brianium/paratest": "^7.20.0", + "composer/xdebug-handler": "^3.0.5", + "nunomaduro/collision": "^8.9.4", + "nunomaduro/termwind": "^2.4.0", + "pestphp/pest-plugin": "^4.0.0", + "pestphp/pest-plugin-arch": "^4.0.2", + "pestphp/pest-plugin-mutate": "^4.0.1", + "pestphp/pest-plugin-profanity": "^4.2.1", + "php": "^8.3.0", + "phpunit/phpunit": "^12.5.28", + "symfony/process": "^7.4.13|^8.1.0" + }, + "conflict": { + "filp/whoops": "<2.18.3", + "phpunit/phpunit": ">12.5.28", + "sebastian/exporter": "<7.0.0", + "webmozart/assert": "<1.11.0" + }, + "require-dev": { + "mrpunyapal/peststan": "^0.2.10", + "pestphp/pest-dev-tools": "^4.1.0", + "pestphp/pest-plugin-browser": "^4.3.1", + "pestphp/pest-plugin-type-coverage": "^4.0.4", + "psy/psysh": "^0.12.23" + }, + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Mutate\\Plugins\\Mutate", + "Pest\\Plugins\\Configuration", + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Shard", + "Pest\\Plugins\\Tia", + "Pest\\Plugins\\Parallel" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "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": "The 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/v4.7.2" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2026-06-01T06:08:59+00:00" + }, + { + "name": "pestphp/pest-plugin", + "version": "v4.0.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "9d4b93d7f73d3f9c3189bb22c220fef271cdf568" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/9d4b93d7f73d3f9c3189bb22c220fef271cdf568", + "reference": "9d4b93d7f73d3f9c3189bb22c220fef271cdf568", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.3" + }, + "conflict": { + "pestphp/pest": "<4.0.0" + }, + "require-dev": { + "composer/composer": "^2.8.10", + "pestphp/pest": "^4.0.0", + "pestphp/pest-dev-tools": "^4.0.0" + }, + "type": "composer-plugin", + "extra": { + "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/v4.0.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": "2025-08-20T12:35:58+00:00" + }, + { + "name": "pestphp/pest-plugin-arch", + "version": "v4.0.2", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "3fb0d02a91b9da504b139dc7ab2a31efb7c3215c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/3fb0d02a91b9da504b139dc7ab2a31efb7c3215c", + "reference": "3fb0d02a91b9da504b139dc7ab2a31efb7c3215c", + "shasum": "" + }, + "require": { + "pestphp/pest-plugin": "^4.0.0", + "php": "^8.3", + "ta-tikoma/phpunit-architecture-test": "^0.8.7" + }, + "require-dev": { + "pestphp/pest": "^4.4.6", + "pestphp/pest-dev-tools": "^4.1.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Arch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Arch plugin for Pest PHP.", + "keywords": [ + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v4.0.2" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2026-04-10T17:20:19+00:00" + }, + { + "name": "pestphp/pest-plugin-laravel", + "version": "v4.1.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-laravel.git", + "reference": "3057a36669ff11416cc0dc2b521b3aec58c488d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/3057a36669ff11416cc0dc2b521b3aec58c488d0", + "reference": "3057a36669ff11416cc0dc2b521b3aec58c488d0", + "shasum": "" + }, + "require": { + "laravel/framework": "^11.45.2|^12.52.0|^13.0", + "pestphp/pest": "^4.4.1", + "php": "^8.3.0" + }, + "require-dev": { + "laravel/dusk": "^8.3.6", + "orchestra/testbench": "^9.13.0|^10.9.0|^11.0", + "pestphp/pest-dev-tools": "^4.1.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Laravel\\Plugin" + ] + }, + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + } + }, + "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/v4.1.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2026-02-21T00:29:45+00:00" + }, + { + "name": "pestphp/pest-plugin-mutate", + "version": "v4.0.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-mutate.git", + "reference": "d9b32b60b2385e1688a68cc227594738ec26d96c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-mutate/zipball/d9b32b60b2385e1688a68cc227594738ec26d96c", + "reference": "d9b32b60b2385e1688a68cc227594738ec26d96c", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.6.1", + "pestphp/pest-plugin": "^4.0.0", + "php": "^8.3", + "psr/simple-cache": "^3.0.0" + }, + "require-dev": { + "pestphp/pest": "^4.0.0", + "pestphp/pest-dev-tools": "^4.0.0", + "pestphp/pest-plugin-type-coverage": "^4.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Pest\\Mutate\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + }, + { + "name": "Sandro Gehri", + "email": "sandrogehri@gmail.com" + } + ], + "description": "Mutates your code to find untested cases", + "keywords": [ + "framework", + "mutate", + "mutation", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-mutate/tree/v4.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/gehrisandro", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-08-21T20:19:25+00:00" + }, + { + "name": "pestphp/pest-plugin-profanity", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-profanity.git", + "reference": "343cfa6f3564b7e35df0ebb77b7fa97039f72b27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-profanity/zipball/343cfa6f3564b7e35df0ebb77b7fa97039f72b27", + "reference": "343cfa6f3564b7e35df0ebb77b7fa97039f72b27", + "shasum": "" + }, + "require": { + "pestphp/pest-plugin": "^4.0.0", + "php": "^8.3" + }, + "require-dev": { + "faissaloux/pest-plugin-inside": "^1.9", + "pestphp/pest": "^4.0.0", + "pestphp/pest-dev-tools": "^4.0.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Profanity\\Plugin" + ] + } + }, + "autoload": { + "psr-4": { + "Pest\\Profanity\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Profanity Plugin", + "keywords": [ + "framework", + "pest", + "php", + "plugin", + "profanity", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-profanity/tree/v4.2.1" + }, + "time": "2025-12-08T00:13:17+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "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.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+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": "phpstan/phpstan", + "version": "2.2.8", + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e285254e60f33c21902efef4a926ca0987c06804", + "reference": "e285254e60f33c21902efef4a926ca0987c06804", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ondřej Mirtes" + }, + { + "name": "Markus Staab" + }, + { + "name": "Vincent Langlet" + } + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2026-08-04T22:21:45+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "12.5.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "186dab580576598076de6818596d12b61801880e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/186dab580576598076de6818596d12b61801880e", + "reference": "186dab580576598076de6818596d12b61801880e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.7.0", + "php": ">=8.3", + "phpunit/php-text-template": "^5.0", + "sebastian/complexity": "^5.0", + "sebastian/environment": "^8.1.2", + "sebastian/lines-of-code": "^4.0.1", + "sebastian/version": "^6.0", + "theseer/tokenizer": "^2.0.1" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.28" + }, + "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-main": "12.5.x-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", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.7" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" + } + ], + "time": "2026-06-01T13:24:19+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5", + "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.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", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" + } + ], + "time": "2026-02-02T14:04:18+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^12.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.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": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:58:58+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53", + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "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": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:59:16+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "8.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.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", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:59:38+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "12.5.28", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "5895d05f5bf421ed230fbd76e1277e4b8955def4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5895d05f5bf421ed230fbd76e1277e4b8955def4", + "reference": "5895d05f5bf421ed230fbd76e1277e4b8955def4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.3", + "phpunit/php-code-coverage": "^12.5.6", + "phpunit/php-file-iterator": "^6.0.1", + "phpunit/php-invoker": "^6.0.0", + "phpunit/php-text-template": "^5.0.0", + "phpunit/php-timer": "^8.0.0", + "sebastian/cli-parser": "^4.2.1", + "sebastian/comparator": "^7.1.8", + "sebastian/diff": "^7.0.0", + "sebastian/environment": "^8.1.2", + "sebastian/exporter": "^7.0.3", + "sebastian/global-state": "^8.0.2", + "sebastian/object-enumerator": "^7.0.0", + "sebastian/recursion-context": "^7.0.1", + "sebastian/type": "^6.0.4", + "sebastian/version": "^6.0.0", + "staabm/side-effects-detector": "^1.0.5" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "12.5-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/12.5.28" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsoring.html", + "type": "other" + } + ], + "time": "2026-05-27T14:01:10+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.12.24", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1", + "reference": "ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^8.0 || ^7.0 || ^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", + "composer/class-map-generator": "^1.6" + }, + "suggest": { + "composer/class-map-generator": "Improved tab completion performance with better class discovery.", + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-main": "0.12.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" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "https://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.24" + }, + "time": "2026-06-29T15:41:09+00:00" + }, + { + "name": "rector/rector", + "version": "2.6.3", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/7e46709996a4b3dc59e1d6ecbb6a38ace335bd58", + "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "phpstan/phpstan": "^2.2.6" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "suggest": { + "ext-dom": "To manipulate phpunit.xml via the custom-rule command" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "homepage": "https://getrector.com/", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/2.6.3" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2026-08-18T22:01:18+00:00" + }, + { + "name": "samdark/yii2-psr-log-target", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/samdark/yii2-psr-log-target.git", + "reference": "5f14f21d5ee4294fe9eb3e723ec8a3908ca082ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/samdark/yii2-psr-log-target/zipball/5f14f21d5ee4294fe9eb3e723ec8a3908ca082ea", + "reference": "5f14f21d5ee4294fe9eb3e723ec8a3908ca082ea", + "shasum": "" + }, + "require": { + "psr/log": "~1.0.2|~1.1.0|~3.0.0", + "yiisoft/yii2": "~2.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4|~10.4.2" + }, + "type": "yii2-extension", + "autoload": { + "psr-4": { + "samdark\\log\\": "src", + "samdark\\log\\tests\\": "tests" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Alexander Makarov", + "email": "sam@rmcreative.ru" + } + ], + "description": "Yii 2 log target which uses PSR-3 compatible logger", + "homepage": "https://github.com/samdark/yii2-psr-log-target", + "keywords": [ + "extension", + "log", + "psr-3", + "yii" + ], + "support": { + "issues": "https://github.com/samdark/yii2-psr-log-target/issues", + "source": "https://github.com/samdark/yii2-psr-log-target" + }, + "funding": [ + { + "url": "https://github.com/samdark", + "type": "github" + }, + { + "url": "https://www.patreon.com/samdark", + "type": "patreon" + } + ], + "time": "2023-11-23T14:11:29+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "4.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "7d05781b13f7dec9043a629a21d086ed74582a15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/7d05781b13f7dec9043a629a21d086ed74582a15", + "reference": "7d05781b13f7dec9043a629a21d086ed74582a15", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.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 for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser", + "type": "tidelift" + } + ], + "time": "2026-05-17T05:29:34+00:00" + }, + { + "name": "sebastian/comparator", + "version": "7.1.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "7c65c1e79836812819705b473a90c12399542485" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/7c65c1e79836812819705b473a90c12399542485", + "reference": "7c65c1e79836812819705b473a90c12399542485", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.3", + "sebastian/diff": "^7.0", + "sebastian/exporter": "^7.0.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.25" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.1-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", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-05-21T04:45:25+00:00" + }, + { + "name": "sebastian/complexity", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "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": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:55:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6", + "reference": "cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.33", + "symfony/process": "^7.4.17" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.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", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/diff", + "type": "tidelift" + } + ], + "time": "2026-08-25T15:35:54+00:00" + }, + { + "name": "sebastian/environment", + "version": "8.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "9d32c685773823b1983e256ae4ecd48a10d6e439" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/9d32c685773823b1983e256ae4ecd48a10d6e439", + "reference": "9d32c685773823b1983e256ae4ecd48a10d6e439", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.26" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.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": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/8.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" + } + ], + "time": "2026-05-25T13:40:20+00:00" + }, + { + "name": "sebastian/exporter", + "version": "7.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "c5e21b5de653ce0a769fb36f5cdfcb5e7a32cf23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c5e21b5de653ce0a769fb36f5cdfcb5e7a32cf23", + "reference": "c5e21b5de653ce0a769fb36f5cdfcb5e7a32cf23", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.3", + "sebastian/recursion-context": "^7.0.1" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.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", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2026-05-20T04:37:17+00:00" + }, + { + "name": "sebastian/global-state", + "version": "8.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "b164d3274d6537ab462591c5755f76a8f5b1aae9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b164d3274d6537ab462591c5755f76a8f5b1aae9", + "reference": "b164d3274d6537ab462591c5755f76a8f5b1aae9", + "shasum": "" + }, + "require": { + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0.1" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^12.5.28" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.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": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" + } + ], + "time": "2026-06-01T15:10:33+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "d543b8ef219dcd8da262cbb958639a96bedba10e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d543b8ef219dcd8da262cbb958639a96bedba10e", + "reference": "d543b8ef219dcd8da262cbb958639a96bedba10e", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.7.0", + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.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", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/lines-of-code", + "type": "tidelift" + } + ], + "time": "2026-05-19T16:22:07+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "shasum": "" + }, + "require": { + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.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", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:57:48+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "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": "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", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:58:17+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.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", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-13T04:44:59+00:00" + }, + { + "name": "sebastian/type", + "version": "6.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "82ff822c2edc46724be9f7411d3163021f602773" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/82ff822c2edc46724be9f7411d3163021f602773", + "reference": "82ff822c2edc46724be9f7411d3163021f602773", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.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 types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/6.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" + } + ], + "time": "2026-05-20T06:45:45+00:00" + }, + { + "name": "sebastian/version", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.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", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T05:00:38+00:00" + }, + { + "name": "seld/cli-prompt", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/cli-prompt.git", + "reference": "b8dfcf02094b8c03b40322c229493bb2884423c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/b8dfcf02094b8c03b40322c229493bb2884423c5", + "reference": "b8dfcf02094b8c03b40322c229493bb2884423c5", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.63" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\CliPrompt\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", + "keywords": [ + "cli", + "console", + "hidden", + "input", + "prompt" + ], + "support": { + "issues": "https://github.com/Seldaek/cli-prompt/issues", + "source": "https://github.com/Seldaek/cli-prompt/tree/1.0.4" + }, + "time": "2020-12-15T21:32:01+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/80ccff923a8d61f73ebe9da0aa94e25232f004ce", + "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "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.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-25T15:50:05+00:00" + }, + { + "name": "symplify/easy-coding-standard", + "version": "10.3.3", + "source": { + "type": "git", + "url": "https://github.com/easy-coding-standard/ecs.git", + "reference": "c93878b3c052321231519b6540e227380f90be17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/easy-coding-standard/ecs/zipball/c93878b3c052321231519b6540e227380f90be17", + "reference": "c93878b3c052321231519b6540e227380f90be17", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "conflict": { + "friendsofphp/php-cs-fixer": "<3.0", + "squizlabs/php_codesniffer": "<3.6" + }, + "bin": [ + "bin/ecs" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.3-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Prefixed scoped version of ECS package", + "support": { + "issues": "https://github.com/easy-coding-standard/ecs/issues", + "source": "https://github.com/easy-coding-standard/ecs/tree/10.3.3" + }, + "funding": [ + { + "url": "https://www.paypal.me/rectorphp", + "type": "custom" + }, + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2022-06-13T14:03:37+00:00" + }, + { + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.8.7", + "source": { + "type": "git", + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "1248f3f506ca9641d4f68cebcd538fa489754db8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/1248f3f506ca9641d4f68cebcd538fa489754db8", + "reference": "1248f3f506ca9641d4f68cebcd538fa489754db8", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18.0 || ^5.0.0", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0 || ^6.0.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0 || ^8.0.0" + }, + "require-dev": { + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], + "support": { + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.7" + }, + "time": "2026-02-17T17:25:14+00:00" + }, + { + "name": "thamtech/yii2-ratelimiter-advanced", + "version": "0.5", + "source": { + "type": "git", + "url": "https://github.com/thamtech/yii2-ratelimiter-advanced.git", + "reference": "2fde10eaa1ec67e689d06babfc9c68d144d35433" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thamtech/yii2-ratelimiter-advanced/zipball/2fde10eaa1ec67e689d06babfc9c68d144d35433", + "reference": "2fde10eaa1ec67e689d06babfc9c68d144d35433", + "shasum": "" + }, + "require": { + "php": ">=5.6.0", + "yiisoft/yii2": ">=2.0.14 <2.1" + }, + "require-dev": { + "codeception/codeception": "2.0.*", + "codeception/specify": "*", + "codeception/verify": "*", + "flow/jsonpath": "^0.3", + "yiisoft/yii2-codeception": "*", + "yiisoft/yii2-debug": "*", + "yiisoft/yii2-faker": "*" + }, + "type": "yii2-extension", + "autoload": { + "psr-4": { + "thamtech\\ratelimiter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tyler Ham", + "email": "tyler@thamtech.com" + } + ], + "description": "An advanced request rate limiter", + "support": { + "issues": "https://github.com/thamtech/yii2-ratelimiter-advanced/issues", + "source": "https://github.com/thamtech/yii2-ratelimiter-advanced/tree/master" + }, + "time": "2020-08-05T04:29:29+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^8.1" + }, + "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/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2025-12-08T11:19:18+00:00" + }, + { + "name": "yiisoft/yii2", + "version": "2.0.55", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/yii2-framework.git", + "reference": "b900eecdb225041a4c4e0f5e0e5336f606a23bdb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/b900eecdb225041a4c4e0f5e0e5336f606a23bdb", + "reference": "b900eecdb225041a4c4e0f5e0e5336f606a23bdb", + "shasum": "" + }, + "require": { + "bower-asset/inputmask": "^5.0.8 ", + "bower-asset/jquery": "3.7.*@stable | 3.6.*@stable | 3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", + "bower-asset/punycode": "^2.2", + "bower-asset/yii2-pjax": "~2.0.1", + "cebe/markdown": "~1.0.0 | ~1.1.0 | ~1.2.0", + "ext-ctype": "*", + "ext-mbstring": "*", + "ezyang/htmlpurifier": "^4.17", + "lib-pcre": "*", + "php": ">=7.4.0", + "yiisoft/yii2-composer": "~2.0.4" + }, + "bin": [ + "yii" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "yii\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Qiang Xue", + "email": "qiang.xue@gmail.com", + "homepage": "https://www.yiiframework.com/", + "role": "Founder and project lead" + }, + { + "name": "Alexander Makarov", + "email": "sam@rmcreative.ru", + "homepage": "https://rmcreative.ru/", + "role": "Core framework development" + }, + { + "name": "Maurizio Domba", + "homepage": "http://mdomba.info/", + "role": "Core framework development" + }, + { + "name": "Carsten Brandt", + "email": "mail@cebe.cc", + "homepage": "https://www.cebe.cc/", + "role": "Core framework development" + }, + { + "name": "Timur Ruziev", + "email": "resurtm@gmail.com", + "homepage": "http://resurtm.com/", + "role": "Core framework development" + }, + { + "name": "Paul Klimov", + "email": "klimov.paul@gmail.com", + "role": "Core framework development" + }, + { + "name": "Dmitry Naumenko", + "email": "d.naumenko.a@gmail.com", + "role": "Core framework development" + }, + { + "name": "Boudewijn Vahrmeijer", + "email": "info@dynasource.eu", + "homepage": "http://dynasource.eu", + "role": "Core framework development" + } + ], + "description": "Yii PHP Framework Version 2", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "framework", + "yii2" + ], + "support": { + "forum": "https://forum.yiiframework.com/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/yii2/issues?state=open", + "source": "https://github.com/yiisoft/yii2", + "wiki": "https://www.yiiframework.com/wiki" + }, + "funding": [ + { + "url": "https://github.com/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2", + "type": "tidelift" + } + ], + "time": "2026-05-09T14:50:57+00:00" + }, + { + "name": "yiisoft/yii2-composer", + "version": "2.0.11", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/yii2-composer.git", + "reference": "b684b01ecb119c8287721def726a0e24fec2fef2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/b684b01ecb119c8287721def726a0e24fec2fef2", + "reference": "b684b01ecb119c8287721def726a0e24fec2fef2", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 | ^2.0" + }, + "require-dev": { + "composer/composer": "^1.0 | ^2.0@dev", + "phpunit/phpunit": "<7" + }, + "type": "composer-plugin", + "extra": { + "class": "yii\\composer\\Plugin", + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "yii\\composer\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Qiang Xue", + "email": "qiang.xue@gmail.com" + }, + { + "name": "Carsten Brandt", + "email": "mail@cebe.cc" + } + ], + "description": "The composer plugin for Yii extension installer", + "keywords": [ + "composer", + "extension installer", + "yii2" + ], + "support": { + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/yii2-composer/issues", + "source": "https://github.com/yiisoft/yii2-composer", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-composer", + "type": "tidelift" + } + ], + "time": "2025-02-13T20:59:36+00:00" + }, + { + "name": "yiisoft/yii2-debug", + "version": "2.1.27", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/yii2-debug.git", + "reference": "44e158914911ef81cd7111fd6d46b918f65fae7c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/yii2-debug/zipball/44e158914911ef81cd7111fd6d46b918f65fae7c", + "reference": "44e158914911ef81cd7111fd6d46b918f65fae7c", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.4", + "yiisoft/yii2": "~2.0.13" + }, + "require-dev": { + "cweagans/composer-patches": "^1.7", + "phpunit/phpunit": "4.8.34", + "yiisoft/yii2-coding-standards": "~2.0", + "yiisoft/yii2-swiftmailer": "*" + }, + "type": "yii2-extension", + "extra": { + "patches": { + "phpunit/phpunit": { + "Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch", + "Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch", + "Fix PHP 8.1 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php81.patch" + }, + "phpunit/phpunit-mock-objects": { + "Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch" + } + }, + "branch-alias": { + "dev-master": "2.0.x-dev" + }, + "composer-exit-on-patch-failure": true + }, + "autoload": { + "psr-4": { + "yii\\debug\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Qiang Xue", + "email": "qiang.xue@gmail.com" + }, + { + "name": "Simon Karlen", + "email": "simi.albi@outlook.com" + } + ], + "description": "The debugger extension for the Yii framework", + "keywords": [ + "debug", + "debugger", + "dev", + "yii2" + ], + "support": { + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/yii2-debug/issues", + "source": "https://github.com/yiisoft/yii2-debug", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-debug", + "type": "tidelift" + } + ], + "time": "2025-06-08T13:32:11+00:00" + }, + { + "name": "yiisoft/yii2-queue", + "version": "2.3.8", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/yii2-queue.git", + "reference": "e0f935e5b868d53347acfb14ec19faaf16085005" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/e0f935e5b868d53347acfb14ec19faaf16085005", + "reference": "e0f935e5b868d53347acfb14ec19faaf16085005", + "shasum": "" + }, + "require": { + "php": ">=5.5.0", + "symfony/process": "^3.3||^4.0||^5.0||^6.0||^7.0", + "yiisoft/yii2": "~2.0.14" + }, + "require-dev": { + "aws/aws-sdk-php": ">=2.4", + "cweagans/composer-patches": "^1.7", + "enqueue/amqp-lib": "^0.8||^0.9.10||^0.10.0", + "enqueue/stomp": "^0.8.39||0.10.19", + "opis/closure": "*", + "pda/pheanstalk": "~3.2.1", + "php-amqplib/php-amqplib": "^2.8.0||^3.0.0", + "phpunit/phpunit": "4.8.34", + "yiisoft/yii2-debug": "~2.1.0", + "yiisoft/yii2-gii": "~2.2.0", + "yiisoft/yii2-redis": "2.0.19" + }, + "suggest": { + "aws/aws-sdk-php": "Need for aws SQS.", + "enqueue/amqp-lib": "Need for AMQP interop queue.", + "enqueue/stomp": "Need for Stomp queue.", + "ext-gearman": "Need for Gearman queue.", + "ext-pcntl": "Need for process signals.", + "pda/pheanstalk": "Need for Beanstalk queue.", + "php-amqplib/php-amqplib": "Need for AMQP queue.", + "yiisoft/yii2-redis": "Need for Redis queue." + }, + "type": "yii2-extension", + "extra": { + "patches": { + "phpunit/phpunit": { + "Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch", + "Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch" + }, + "phpunit/phpunit-mock-objects": { + "Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch" + } + }, + "branch-alias": { + "dev-master": "2.x-dev" + }, + "composer-exit-on-patch-failure": true + }, + "autoload": { + "psr-4": { + "yii\\queue\\": "src", + "yii\\queue\\db\\": "src/drivers/db", + "yii\\queue\\sqs\\": "src/drivers/sqs", + "yii\\queue\\amqp\\": "src/drivers/amqp", + "yii\\queue\\file\\": "src/drivers/file", + "yii\\queue\\sync\\": "src/drivers/sync", + "yii\\queue\\redis\\": "src/drivers/redis", + "yii\\queue\\stomp\\": "src/drivers/stomp", + "yii\\queue\\gearman\\": "src/drivers/gearman", + "yii\\queue\\beanstalk\\": "src/drivers/beanstalk", + "yii\\queue\\amqp_interop\\": "src/drivers/amqp_interop" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Roman Zhuravlev", + "email": "zhuravljov@gmail.com" + } + ], + "description": "Yii2 Queue Extension which supports queues based on DB, Redis, RabbitMQ, Beanstalk, SQS, and Gearman", + "keywords": [ + "async", + "beanstalk", + "db", + "gearman", + "gii", + "queue", + "rabbitmq", + "redis", + "sqs", + "yii" + ], + "support": { + "docs": "https://github.com/yiisoft/yii2-queue/blob/master/docs/guide", + "issues": "https://github.com/yiisoft/yii2-queue/issues", + "source": "https://github.com/yiisoft/yii2-queue" + }, + "funding": [ + { + "url": "https://github.com/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-queue", + "type": "tidelift" + } + ], + "time": "2026-01-08T07:52:05+00:00" + }, + { + "name": "yiisoft/yii2-symfonymailer", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/yii2-symfonymailer.git", + "reference": "21f407239c51fc6d50d369e4469d006afa8c9b2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/yii2-symfonymailer/zipball/21f407239c51fc6d50d369e4469d006afa8c9b2c", + "reference": "21f407239c51fc6d50d369e4469d006afa8c9b2c", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "1.0.0", + "symfony/mailer": "^6.4 || ^7.0", + "symfony/mime": "^6.4 || ^7.0", + "yiisoft/yii2": ">=2.0.4" + }, + "require-dev": { + "maglnet/composer-require-checker": "^4.7", + "phpunit/phpunit": "^10.5", + "roave/infection-static-analysis-plugin": "^1.34", + "symplify/easy-coding-standard": "^12.1", + "vimeo/psalm": "^5.20" + }, + "suggest": { + "yiisoft/yii2-psr-log-source": "Allows routing transport logs to your Yii2 logger" + }, + "type": "yii2-extension", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "sort-packages": true + }, + "autoload": { + "psr-4": { + "yii\\symfonymailer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kirill Petrov", + "email": "archibeardrinker@gmail.com" + } + ], + "description": "The SymfonyMailer integration for the Yii framework", + "keywords": [ + "email", + "mail", + "mailer", + "symfony", + "symfonymailer", + "yii2" + ], + "support": { + "forum": "http://www.yiiframework.com/forum/", + "irc": "irc://irc.freenode.net/yii", + "issues": "https://github.com/yiisoft/yii2-symfonymailer/issues", + "source": "https://github.com/yiisoft/yii2-symfonymailer", + "wiki": "http://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-symfonymailer", + "type": "tidelift" + } + ], + "time": "2024-01-29T14:13:45+00:00" + } + ], + "aliases": [ + { + "package": "craftcms/cms", + "version": "6.9999999.9999999.9999999-dev", + "alias": "dev-feature/6.x-form-component-compatibility-and-usage-updates", + "alias_normalized": "dev-feature/6.x-form-component-compatibility-and-usage-updates" + }, + { + "package": "craftcms/cms-assets", + "version": "6.9999999.9999999.9999999-dev", + "alias": "dev-feature/6.x-form-component-compatibility-and-usage-updates", + "alias_normalized": "dev-feature/6.x-form-component-compatibility-and-usage-updates" + } + ], + "minimum-stability": "dev", + "stability-flags": { + "craftcms/cms": 20, + "craftcms/cms-assets": 20, + "craftcms/ecs": 20, + "craftcms/yii2-adapter": 20 + }, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.5" + }, + "platform-dev": {}, + "plugin-api-version": "2.9.0" +} diff --git a/composer.lock b/composer.lock index 4a615231e6..1bc8b02320 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cceec5dfa88beb3ef42037526eac053d", + "content-hash": "c42c1052189b24c4d6b925caccc7cd36", "packages": [ { "name": "bacon/bacon-qr-code", @@ -63,23 +63,24 @@ }, { "name": "brick/math", - "version": "0.17.2", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "8189e751995f9e15729c1aa2f89fa8f166ffe818" + "reference": "2effe05d2177c451b86c6a073196a4034c02f211" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/8189e751995f9e15729c1aa2f89fa8f166ffe818", - "reference": "8189e751995f9e15729c1aa2f89fa8f166ffe818", + "url": "https://api.github.com/repos/brick/math/zipball/2effe05d2177c451b86c6a073196a4034c02f211", + "reference": "2effe05d2177c451b86c6a073196a4034c02f211", "shasum": "" }, "require": { "php": "^8.2" }, "require-dev": { - "phpstan/phpstan": "2.1.22", + "phpstan/phpstan": "2.2.13", + "phpstan/phpstan-phpunit": "2.0.18", "phpunit/phpunit": "^11.5" }, "type": "library", @@ -110,7 +111,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.17.2" + "source": "https://github.com/brick/math/tree/1.0.0" }, "funding": [ { @@ -118,20 +119,20 @@ "type": "github" } ], - "time": "2026-05-25T20:34:43+00:00" + "time": "2026-09-12T10:28:18+00:00" }, { "name": "carbonphp/carbon-doctrine-types", - "version": "3.2.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + "reference": "5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", - "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc", + "reference": "5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc", "shasum": "" }, "require": { @@ -146,6 +147,11 @@ "phpunit/phpunit": "^10.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" @@ -171,7 +177,7 @@ ], "support": { "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.1" }, "funding": [ { @@ -187,88 +193,24 @@ "type": "tidelift" } ], - "time": "2024-02-09T16:56:22+00:00" - }, - { - "name": "cebe/markdown", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/cebe/markdown.git", - "reference": "9bac5e971dd391e2802dca5400bbeacbaea9eb86" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cebe/markdown/zipball/9bac5e971dd391e2802dca5400bbeacbaea9eb86", - "reference": "9bac5e971dd391e2802dca5400bbeacbaea9eb86", - "shasum": "" - }, - "require": { - "lib-pcre": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "cebe/indent": "*", - "facebook/xhprof": "*@dev", - "phpunit/phpunit": "4.1.*" - }, - "bin": [ - "bin/markdown" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "cebe\\markdown\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Carsten Brandt", - "email": "mail@cebe.cc", - "homepage": "http://cebe.cc/", - "role": "Creator" - } - ], - "description": "A super fast, highly extensible markdown parser for PHP", - "homepage": "https://github.com/cebe/markdown#readme", - "keywords": [ - "extensible", - "fast", - "gfm", - "markdown", - "markdown-extra" - ], - "support": { - "issues": "https://github.com/cebe/markdown/issues", - "source": "https://github.com/cebe/markdown" - }, - "time": "2018-03-26T11:24:36+00:00" + "time": "2026-09-06T14:11:38+00:00" }, { "name": "commerceguys/addressing", - "version": "v2.2.5", + "version": "v2.3.2", "source": { "type": "git", "url": "https://github.com/commerceguys/addressing.git", - "reference": "15b789e5e6ededaf803d23c56cdc300a94522a7c" + "reference": "e3ce66714cfa181b848533d926e8583261253c9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/commerceguys/addressing/zipball/15b789e5e6ededaf803d23c56cdc300a94522a7c", - "reference": "15b789e5e6ededaf803d23c56cdc300a94522a7c", + "url": "https://api.github.com/repos/commerceguys/addressing/zipball/e3ce66714cfa181b848533d926e8583261253c9e", + "reference": "e3ce66714cfa181b848533d926e8583261253c9e", "shasum": "" }, "require": { - "doctrine/collections": "^1.6 || ^2.0", + "doctrine/collections": "^1.6 || ^2.0 || ^3.0", "php": ">=8.0" }, "require-dev": { @@ -313,34 +255,35 @@ ], "support": { "issues": "https://github.com/commerceguys/addressing/issues", - "source": "https://github.com/commerceguys/addressing/tree/v2.2.5" + "source": "https://github.com/commerceguys/addressing/tree/v2.3.2" }, - "time": "2026-01-05T13:00:32+00:00" + "time": "2026-10-09T10:50:35+00:00" }, { "name": "composer/pcre", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" + "reference": "d5a341b3fb61f3001970940afb1d332968a183ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", - "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "url": "https://api.github.com/repos/composer/pcre/zipball/d5a341b3fb61f3001970940afb1d332968a183ed", + "reference": "d5a341b3fb61f3001970940afb1d332968a183ed", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, "conflict": { - "phpstan/phpstan": "<1.11.10" + "phpstan/phpstan": "<2.2.2" }, "require-dev": { - "phpstan/phpstan": "^1.12 || ^2", - "phpstan/phpstan-strict-rules": "^1 || ^2", - "phpunit/phpunit": "^8 || ^9" + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^9" }, "type": "library", "extra": { @@ -378,7 +321,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.3.2" + "source": "https://github.com/composer/pcre/tree/3.4.0" }, "funding": [ { @@ -388,26 +331,22 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-11-12T16:29:46+00:00" + "time": "2026-06-07T11:47:49+00:00" }, { "name": "composer/semver", - "version": "3.4.4", + "version": "3.5.1", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" + "reference": "528948210cc46f967a4b98e83b19e76f2b504993" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", - "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "url": "https://api.github.com/repos/composer/semver/zipball/528948210cc46f967a4b98e83b19e76f2b504993", + "reference": "528948210cc46f967a4b98e83b19e76f2b504993", "shasum": "" }, "require": { @@ -449,7 +388,7 @@ "homepage": "http://robbast.nl" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "Version comparison library that offers utilities, version constraint parsing and validation.", "keywords": [ "semantic", "semver", @@ -459,7 +398,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.4" + "source": "https://github.com/composer/semver/tree/3.5.1" }, "funding": [ { @@ -471,32 +410,35 @@ "type": "github" } ], - "time": "2025-08-20T19:15:30+00:00" + "time": "2026-10-05T13:12:12+00:00" }, { "name": "craftcms/cms", - "version": "5.10.10", + "version": "6.x-dev", "source": { "type": "git", "url": "https://github.com/craftcms/cms.git", - "reference": "d4c5f814e59de56a3124776da6b3c399cb28d64f" + "reference": "7d178b6d40994d930b196cf2be4a980c90af77f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/cms/zipball/d4c5f814e59de56a3124776da6b3c399cb28d64f", - "reference": "d4c5f814e59de56a3124776da6b3c399cb28d64f", + "url": "https://api.github.com/repos/craftcms/cms/zipball/7d178b6d40994d930b196cf2be4a980c90af77f5", + "reference": "7d178b6d40994d930b196cf2be4a980c90af77f5", "shasum": "" }, "require": { "bacon/bacon-qr-code": "^3.0", "commerceguys/addressing": "^2.1.1", "composer/semver": "^3.3.2", + "craftcms/cms-assets": "self.version", + "craftcms/laravel-aliases": "^2.0", + "craftcms/laravel-dependency-aware-cache": "^1.2.3", + "craftcms/laravel-ruleset-validation": "^1.1", "craftcms/plugin-installer": "~1.6.0", - "craftcms/server-check": "~5.1.0", + "craftcms/server-check": "~6.0.0", "craftcms/url-validator": "^1.0", - "creocoder/yii2-nested-sets": "~0.9.0", - "elvanto/litemoji": "~4.3.0", - "enshrined/svg-sanitize": "~0.22.0", + "elvanto/litemoji": "^5.2.0", + "enshrined/svg-sanitize": "^1.0.0", "ext-bcmath": "*", "ext-curl": "*", "ext-dom": "*", @@ -508,72 +450,133 @@ "ext-pdo": "*", "ext-zip": "*", "guzzlehttp/guzzle": "^7.2.0", - "illuminate/collections": "^v10.42.0", - "illuminate/support": "^10.49", + "inertiajs/inertia-laravel": "^3.0", + "intervention/image": "^4.2", + "laravel/framework": "^13.17", + "laravel/passport": "^13.0", + "laravel/wayfinder": "^0.1.12", + "league/commonmark": "^2.8", + "league/flysystem-path-prefixing": "^3.31", "league/uri": "^7.0", - "mikehaertl/php-shellcommand": "^1.6.3", + "mcp/sdk": "0.8.1", "moneyphp/money": "^4.0", - "monolog/monolog": "^3.0", - "php": "^8.2", - "phpdocumentor/reflection-docblock": "^5.3", + "php": "^8.5", "phpoffice/phpspreadsheet": "^5.3", - "pixelandtonic/graphql-php": "~14.11.10.1", - "pixelandtonic/imagine": "~1.5.2.1", - "pragmarx/google2fa": "^8.0", + "pragmarx/google2fa": "^9.0", "pragmarx/recovery": "^0.2.1", - "samdark/yii2-psr-log-target": "^1.1.3", - "seld/cli-prompt": "^1.0.4", - "symfony/css-selector": "^6.0|^7.0", - "symfony/dom-crawler": "^6.0|^7.0", - "symfony/filesystem": "^6.3", - "symfony/http-client": "^6.0.3|^7.0", - "symfony/property-access": "^7.0", - "symfony/property-info": "^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/var-dumper": "^5.0|^6.0|^7.0", - "symfony/yaml": "^5.2.3|^6.0|^7.0", + "symfony/css-selector": "^7.0|^8.0", + "symfony/dom-crawler": "^7.0|^8.0", + "symfony/filesystem": "^7.0|^8.0", + "symfony/html-sanitizer": "^7.0|^8.0", + "symfony/psr-http-message-bridge": "^7.4|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/yaml": "^7.0|^8.0", "theiconic/name-parser": "^1.2", - "twig/twig": "~3.27.0", + "tpetry/laravel-query-expressions": "^1.5", + "twig/twig": "~3.30.0", "voku/portable-ascii": "^2.0", - "web-auth/webauthn-lib": "~5.3.5", - "yiisoft/yii2": "~2.0.55.0", - "yiisoft/yii2-debug": "~2.1.27.0", - "yiisoft/yii2-queue": "~2.3.2", - "yiisoft/yii2-symfonymailer": "^4.0.0" - }, - "provide": { - "bower-asset/inputmask": "5.0.9", - "bower-asset/jquery": "3.6.1", - "bower-asset/punycode": "^2.2", - "bower-asset/yii2-pjax": "~2.0.1", - "yii2tech/ar-softdelete": "1.0.4" + "web-auth/webauthn-lib": "~5.3.9", + "webonyx/graphql-php": "~15.33.1", + "yiisoft/arrays": "^3.2", + "yiisoft/html": "^4.1", + "yiisoft/translator": "^3.2", + "yiisoft/translator-message-php": "^1.1" }, "require-dev": { - "codeception/codeception": "^5.2.0", - "codeception/lib-innerbrowser": "4.0.1", - "codeception/module-asserts": "^3.0.0", - "codeception/module-datafactory": "^3.0.0", - "codeception/module-phpbrowser": "^3.0.0", - "codeception/module-rest": "^3.3.2", - "codeception/module-yii2": "^1.1.9", - "craftcms/ecs": "dev-main", + "barryvdh/laravel-debugbar": "^4.2", + "craftcms/test-plugin": "1.0.1", + "dg/bypass-finals": "^1.9", + "driftingly/rector-laravel": "^2.6.2", "fakerphp/faker": "^1.19.0", - "league/factory-muffin": "^3.3.0", + "intervention/image-driver-vips": "^4.1", + "larastan/larastan": "^3.13", + "laravel/boost": "^2.10.3", + "laravel/pao": "^1.0", + "laravel/pint": "^1.22", + "laravel/socialite": "^5.23", + "league/flysystem-aws-s3-v3": "^3.35", + "orchestra/testbench": "^11.0", + "pestphp/pest": "^5.0", + "pestphp/pest-plugin-agent": "^5.0", + "pestphp/pest-plugin-arch": "^5.0", + "pestphp/pest-plugin-laravel": "^5.0", "phpstan/phpstan": "^2.1", - "rector/rector": "^2.0", - "vlucas/phpdotenv": "^5.4.1", - "yiisoft/yii2-redis": "^2.0" + "rector/rector": "^2.3", + "spatie/laravel-typescript-transformer": "^3.2" }, "suggest": { "ext-exif": "Adds support for parsing image EXIF data.", "ext-iconv": "Adds support for more character encodings than PHP’s built-in mb_convert_encoding() function, which Craft will take advantage of when converting strings to UTF-8.", - "ext-imagick": "Adds support for more image processing formats and options." + "ext-imagick": "Adds support for more image processing formats and options.", + "intervention/image-driver-vips": "Adds support for image processing with libvips (requires ext-ffi and libvips).", + "laravel/socialite": "Adds OAuth login support for providers configured with `GeneralConfig::oauthProviders()`." }, "type": "library", + "extra": { + "laravel": { + "aliases": { + "Gql": "CraftCms\\Cms\\Support\\Facades\\Gql", + "I18N": "CraftCms\\Cms\\Support\\Facades\\I18N", + "Path": "CraftCms\\Cms\\Support\\Facades\\Path", + "Twig": "CraftCms\\Cms\\Support\\Facades\\Twig", + "OAuth": "CraftCms\\Cms\\Support\\Facades\\OAuth", + "Sites": "CraftCms\\Cms\\Support\\Facades\\Sites", + "Users": "CraftCms\\Cms\\Support\\Facades\\Users", + "Assets": "CraftCms\\Cms\\Support\\Facades\\Assets", + "Drafts": "CraftCms\\Cms\\Support\\Facades\\Drafts", + "Fields": "CraftCms\\Cms\\Support\\Facades\\Fields", + "Images": "CraftCms\\Cms\\Support\\Facades\\Images", + "Search": "CraftCms\\Cms\\Support\\Facades\\Search", + "BulkOps": "CraftCms\\Cms\\Support\\Facades\\BulkOps", + "Entries": "CraftCms\\Cms\\Support\\Facades\\Entries", + "Folders": "CraftCms\\Cms\\Support\\Facades\\Folders", + "Plugins": "CraftCms\\Cms\\Support\\Facades\\Plugins", + "Updates": "CraftCms\\Cms\\Support\\Facades\\Updates", + "Volumes": "CraftCms\\Cms\\Support\\Facades\\Volumes", + "Elements": "CraftCms\\Cms\\Support\\Facades\\Elements", + "Markdown": "CraftCms\\Cms\\Support\\Facades\\Markdown", + "Sections": "CraftCms\\Cms\\Support\\Facades\\Sections", + "Security": "CraftCms\\Cms\\Support\\Facades\\Security", + "Template": "CraftCms\\Cms\\Support\\Facades\\Template", + "Addresses": "CraftCms\\Cms\\Support\\Facades\\Addresses", + "HtmlStack": "CraftCms\\Cms\\Support\\Facades\\HtmlStack", + "Revisions": "CraftCms\\Cms\\Support\\Facades\\Revisions", + "Workflows": "CraftCms\\Cms\\Support\\Facades\\Workflows", + "Activities": "CraftCms\\Cms\\Support\\Facades\\Activities", + "Conditions": "CraftCms\\Cms\\Support\\Facades\\Conditions", + "Deprecator": "CraftCms\\Cms\\Support\\Facades\\Deprecator", + "EntryTypes": "CraftCms\\Cms\\Support\\Facades\\EntryTypes", + "SiteGroups": "CraftCms\\Cms\\Support\\Facades\\SiteGroups", + "Structures": "CraftCms\\Cms\\Support\\Facades\\Structures", + "UserGroups": "CraftCms\\Cms\\Support\\Facades\\UserGroups", + "AuthMethods": "CraftCms\\Cms\\Support\\Facades\\AuthMethods", + "JobProgress": "CraftCms\\Cms\\Support\\Facades\\JobProgress", + "AssetIndexer": "CraftCms\\Cms\\Support\\Facades\\AssetIndexer", + "DeltaRegistry": "CraftCms\\Cms\\Support\\Facades\\DeltaRegistry", + "ElementCaches": "CraftCms\\Cms\\Support\\Facades\\ElementCaches", + "ProjectConfig": "CraftCms\\Cms\\Support\\Facades\\ProjectConfig", + "TemplateHooks": "CraftCms\\Cms\\Support\\Facades\\TemplateHooks", + "ElementActions": "CraftCms\\Cms\\Support\\Facades\\ElementActions", + "ElementSources": "CraftCms\\Cms\\Support\\Facades\\ElementSources", + "HtmlSanitizers": "CraftCms\\Cms\\Support\\Facades\\HtmlSanitizers", + "InputNamespace": "CraftCms\\Cms\\Support\\Facades\\InputNamespace", + "ElementActivity": "CraftCms\\Cms\\Support\\Facades\\ElementActivity", + "ImageTransforms": "CraftCms\\Cms\\Support\\Facades\\ImageTransforms", + "ResponseHeaders": "CraftCms\\Cms\\Support\\Facades\\ResponseHeaders", + "UserPermissions": "CraftCms\\Cms\\Support\\Facades\\UserPermissions", + "ElementExporters": "CraftCms\\Cms\\Support\\Facades\\ElementExporters" + }, + "providers": [ + "CraftCms\\Cms\\Providers\\CraftServiceProvider" + ] + } + }, "autoload": { + "files": [ + "src/helpers.php" + ], "psr-4": { - "craft\\": "src/", - "yii2tech\\ar\\softdelete\\": "lib/ar-softdelete/src/" + "CraftCms\\Cms\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -591,7 +594,7 @@ "keywords": [ "cms", "craftcms", - "yii2" + "laravel" ], "support": { "docs": "https://craftcms.com/docs/5.x/", @@ -601,131 +604,214 @@ "rss": "https://github.com/craftcms/cms/releases.atom", "source": "https://github.com/craftcms/cms" }, - "time": "2026-07-08T22:13:52+00:00" + "time": "2026-10-12T11:00:07+00:00" }, { - "name": "craftcms/plugin-installer", - "version": "1.6.0", + "name": "craftcms/cms-assets", + "version": "6.x-dev", "source": { "type": "git", - "url": "https://github.com/craftcms/plugin-installer.git", - "reference": "bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f" + "url": "https://github.com/craftcms/cms-assets.git", + "reference": "11fe5e8e850fe728fc5c74d6ebda33ef3e52e6d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/plugin-installer/zipball/bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f", - "reference": "bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f", + "url": "https://api.github.com/repos/craftcms/cms-assets/zipball/11fe5e8e850fe728fc5c74d6ebda33ef3e52e6d0", + "reference": "11fe5e8e850fe728fc5c74d6ebda33ef3e52e6d0", + "shasum": "" + }, + "default-branch": true, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "proprietary" + ], + "description": "Built assets for Craft CMS.", + "support": { + "source": "https://github.com/craftcms/cms-assets/tree/6.x" + }, + "time": "2026-10-12T11:02:35+00:00" + }, + { + "name": "craftcms/laravel-aliases", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/craftcms/laravel-aliases.git", + "reference": "734ea28e7fc7acfc3988f64475b416ecbc46419e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/laravel-aliases/zipball/734ea28e7fc7acfc3988f64475b416ecbc46419e", + "reference": "734ea28e7fc7acfc3988f64475b416ecbc46419e", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.4" + "illuminate/contracts": "^12.0||^13.0", + "php": "^8.2", + "yiisoft/aliases": "^3.0" }, "require-dev": { - "composer/composer": "^1.0 || ^2.0" + "larastan/larastan": "^2.9||^3.0", + "laravel/pint": "^1.14", + "nunomaduro/collision": "^8.1.1||^7.10.0", + "orchestra/testbench": "^10.0.0||^11.0", + "pestphp/pest": "^4.0", + "pestphp/pest-plugin-arch": "^4.0", + "pestphp/pest-plugin-laravel": "^4.0", + "phpstan/extension-installer": "^1.3||^2.0", + "phpstan/phpstan-deprecation-rules": "^1.1||^2.0", + "phpstan/phpstan-phpunit": "^1.3||^2.0" }, - "type": "composer-plugin", + "type": "library", "extra": { - "class": "craft\\composer\\Plugin" + "laravel": { + "aliases": { + "Aliases": "CraftCms\\Aliases\\Facades\\Aliases" + }, + "providers": [ + "CraftCms\\Aliases\\AliasesServiceProvider" + ] + } }, "autoload": { "psr-4": { - "craft\\composer\\": "src/" + "CraftCms\\Aliases\\": "src/", + "CraftCms\\Aliases\\Database\\Factories\\": "database/factories/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Craft CMS Plugin Installer", - "homepage": "https://craftcms.com/", + "authors": [ + { + "name": "Pixel & Tonic", + "homepage": "https://pixelandtonic.com/" + } + ], + "description": "A Laravel wrapper around yiisoft/aliases", + "homepage": "https://github.com/craftcms/laravel-aliases", "keywords": [ - "cms", - "composer", "craftcms", - "installer", - "plugin" + "laravel", + "laravel-aliases", + "yii" ], "support": { - "docs": "https://craftcms.com/docs", - "email": "support@craftcms.com", - "forum": "https://craftcms.stackexchange.com/", - "issues": "https://github.com/craftcms/cms/issues?state=open", - "rss": "https://craftcms.com/changelog.rss", - "source": "https://github.com/craftcms/cms" + "issues": "https://github.com/craftcms/laravel-aliases/issues", + "source": "https://github.com/craftcms/laravel-aliases/tree/2.1.0" }, - "time": "2023-02-22T13:17:00+00:00" + "time": "2026-03-17T14:59:00+00:00" }, { - "name": "craftcms/server-check", - "version": "5.1.0", + "name": "craftcms/laravel-dependency-aware-cache", + "version": "1.2.3", "source": { "type": "git", - "url": "https://github.com/craftcms/server-check.git", - "reference": "7a4f1720c4fe1f0731254a82e63060a217f51cdc" + "url": "https://github.com/craftcms/laravel-dependency-aware-cache.git", + "reference": "5d5352c6a56b901d1c61f87bf912301785c7f350" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/server-check/zipball/7a4f1720c4fe1f0731254a82e63060a217f51cdc", - "reference": "7a4f1720c4fe1f0731254a82e63060a217f51cdc", + "url": "https://api.github.com/repos/craftcms/laravel-dependency-aware-cache/zipball/5d5352c6a56b901d1c61f87bf912301785c7f350", + "reference": "5d5352c6a56b901d1c61f87bf912301785c7f350", "shasum": "" }, + "require": { + "illuminate/cache": "^12.0|^13.0", + "illuminate/contracts": "^12.0||^13.0", + "php": "^8.2" + }, + "require-dev": { + "larastan/larastan": "^2.9||^3.0", + "laravel/pint": "^1.14", + "nunomaduro/collision": "^8.1.1||^7.10.0", + "orchestra/testbench": "^10.0.0||^9.0.0||^8.22.0||^9.0||^10.0||^11.0", + "pestphp/pest": "^4.0", + "pestphp/pest-plugin-arch": "^v4.0.0", + "pestphp/pest-plugin-laravel": "^v4.1.0", + "phpstan/extension-installer": "^1.3||^2.0", + "phpstan/phpstan-deprecation-rules": "^1.1||^2.0", + "phpstan/phpstan-phpunit": "^1.3||^2.0" + }, "type": "library", + "extra": { + "laravel": { + "aliases": { + "DependencyCache": "CraftCms\\DependencyAwareCache\\Facades\\DependencyCache" + }, + "providers": [ + "CraftCms\\DependencyAwareCache\\CacheServiceProvider" + ] + } + }, "autoload": { - "classmap": [ - "server/requirements" - ] + "psr-4": { + "CraftCms\\DependencyAwareCache\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "Craft CMS Server Check", - "homepage": "https://craftcms.com/", + "authors": [ + { + "name": "Pixel & Tonic", + "homepage": "https://pixelandtonic.com/" + } + ], + "description": "A dependency aware cache repository for Laravel", + "homepage": "https://github.com/craftcms/laravel-dependency-aware-cache", "keywords": [ - "cms", + "cache", "craftcms", - "requirements", - "yii2" + "laravel" ], "support": { - "docs": "https://github.com/craftcms/docs", - "email": "support@craftcms.com", - "forum": "https://craftcms.stackexchange.com/", - "issues": "https://github.com/craftcms/server-check/issues?state=open", - "rss": "https://github.com/craftcms/server-check/releases.atom", - "source": "https://github.com/craftcms/server-check" + "issues": "https://github.com/craftcms/laravel-dependency-aware-cache/issues", + "source": "https://github.com/craftcms/laravel-dependency-aware-cache/tree/1.2.3" }, - "time": "2026-04-07T16:48:35+00:00" + "time": "2026-05-01T12:08:11+00:00" }, { - "name": "craftcms/url-validator", + "name": "craftcms/laravel-ruleset-validation", "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/craftcms/url-validator.git", - "reference": "3918c21317a856d6313b3fbf40d70ce013cdd715" + "url": "https://github.com/craftcms/laravel-ruleset-validation.git", + "reference": "5fd54f4643f4746d6ac662bbec13aa225f62edfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/url-validator/zipball/3918c21317a856d6313b3fbf40d70ce013cdd715", - "reference": "3918c21317a856d6313b3fbf40d70ce013cdd715", + "url": "https://api.github.com/repos/craftcms/laravel-ruleset-validation/zipball/5fd54f4643f4746d6ac662bbec13aa225f62edfb", + "reference": "5fd54f4643f4746d6ac662bbec13aa225f62edfb", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^8.0.2" + "illuminate/contracts": "^13.0", + "illuminate/support": "^13.0", + "illuminate/validation": "^13.0", + "php": "^8.4" }, "require-dev": { - "laravel/pint": "^1.29", - "nunomaduro/collision": "^8.1", - "pestphp/pest": "^3.0", - "phpstan/phpstan": "^2.0" + "larastan/larastan": "^3.0", + "laravel/pint": "^v1.29", + "nunomaduro/collision": "^8.1.1", + "orchestra/testbench": "^11.0", + "pestphp/pest": "^4.0" }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "CraftCms\\RulesetValidation\\RulesetValidationServiceProvider" + ] + } + }, "autoload": { "psr-4": { - "CraftCms\\UrlValidator\\": "src/" + "CraftCms\\RulesetValidation\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -738,65 +824,174 @@ "homepage": "https://pixelandtonic.com/" } ], - "description": "Validate URLs and IP addresses against SSRF, DNS rebinding, and cloud-metadata attacks.", - "homepage": "https://github.com/craftcms/url-validator", + "description": "Validate requests and objects with reusable Laravel rulesets.", + "homepage": "https://github.com/craftcms/laravel-ruleset-validation", "keywords": [ - "IP", "craftcms", - "security", - "ssrf", - "url", + "laravel", + "rulesets", "validation" ], "support": { - "issues": "https://github.com/craftcms/url-validator/issues", - "source": "https://github.com/craftcms/url-validator/tree/1.1.0" + "issues": "https://github.com/craftcms/laravel-ruleset-validation/issues", + "source": "https://github.com/craftcms/laravel-ruleset-validation/tree/1.1.0" }, - "time": "2026-07-06T20:35:29+00:00" + "time": "2026-04-22T11:01:37+00:00" }, { - "name": "creocoder/yii2-nested-sets", - "version": "0.9.0", + "name": "craftcms/plugin-installer", + "version": "1.6.0", "source": { "type": "git", - "url": "https://github.com/creocoder/yii2-nested-sets.git", - "reference": "cb8635a459b6246e5a144f096b992dcc30cf9954" + "url": "https://github.com/craftcms/plugin-installer.git", + "reference": "bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/creocoder/yii2-nested-sets/zipball/cb8635a459b6246e5a144f096b992dcc30cf9954", - "reference": "cb8635a459b6246e5a144f096b992dcc30cf9954", + "url": "https://api.github.com/repos/craftcms/plugin-installer/zipball/bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f", + "reference": "bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f", "shasum": "" }, "require": { - "yiisoft/yii2": "*" + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4" }, - "type": "yii2-extension", - "autoload": { - "psr-4": { - "creocoder\\nestedsets\\": "src" - } + "require-dev": { + "composer/composer": "^1.0 || ^2.0" + }, + "type": "composer-plugin", + "extra": { + "class": "craft\\composer\\Plugin" + }, + "autoload": { + "psr-4": { + "craft\\composer\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" + ], + "description": "Craft CMS Plugin Installer", + "homepage": "https://craftcms.com/", + "keywords": [ + "cms", + "composer", + "craftcms", + "installer", + "plugin" + ], + "support": { + "docs": "https://craftcms.com/docs", + "email": "support@craftcms.com", + "forum": "https://craftcms.stackexchange.com/", + "issues": "https://github.com/craftcms/cms/issues?state=open", + "rss": "https://craftcms.com/changelog.rss", + "source": "https://github.com/craftcms/cms" + }, + "time": "2023-02-22T13:17:00+00:00" + }, + { + "name": "craftcms/server-check", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/craftcms/server-check.git", + "reference": "8628114d482ac2c18747619b82b8d06d337145fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/server-check/zipball/8628114d482ac2c18747619b82b8d06d337145fb", + "reference": "8628114d482ac2c18747619b82b8d06d337145fb", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "server/requirements" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Craft CMS Server Check", + "homepage": "https://craftcms.com/", + "keywords": [ + "cms", + "craftcms", + "requirements", + "yii2" + ], + "support": { + "docs": "https://github.com/craftcms/docs", + "email": "support@craftcms.com", + "forum": "https://craftcms.stackexchange.com/", + "issues": "https://github.com/craftcms/server-check/issues?state=open", + "rss": "https://github.com/craftcms/server-check/releases.atom", + "source": "https://github.com/craftcms/server-check" + }, + "time": "2026-05-06T18:15:11+00:00" + }, + { + "name": "craftcms/url-validator", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/craftcms/url-validator.git", + "reference": "1e6a935fff86171e3ca8086b5c547071e5ceb3c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/url-validator/zipball/1e6a935fff86171e3ca8086b5c547071e5ceb3c2", + "reference": "1e6a935fff86171e3ca8086b5c547071e5ceb3c2", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.0.2" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.0", + "laravel/pint": "^1.29", + "nunomaduro/collision": "^8.1", + "pestphp/pest": "^3.0", + "phpstan/phpstan": "^2.0" + }, + "suggest": { + "guzzlehttp/guzzle": "Required to use GuzzleMiddleware" + }, + "type": "library", + "autoload": { + "psr-4": { + "CraftCms\\UrlValidator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], "authors": [ { - "name": "Alexander Kochetov", - "email": "creocoder@gmail.com" + "name": "Pixel & Tonic", + "homepage": "https://pixelandtonic.com/" } ], - "description": "The nested sets behavior for the Yii framework", + "description": "Validate URLs and IP addresses against SSRF, DNS rebinding, and cloud-metadata attacks.", + "homepage": "https://github.com/craftcms/url-validator", "keywords": [ - "nested sets", - "yii2" + "IP", + "craftcms", + "security", + "ssrf", + "url", + "validation" ], "support": { - "issues": "https://github.com/creocoder/yii2-nested-sets/issues", - "source": "https://github.com/creocoder/yii2-nested-sets/tree/master" + "issues": "https://github.com/craftcms/url-validator/issues", + "source": "https://github.com/craftcms/url-validator/tree/1.2.0" }, - "time": "2015-01-27T10:53:51+00:00" + "time": "2026-10-09T22:39:23+00:00" }, { "name": "dasprid/enum", @@ -848,31 +1043,173 @@ }, "time": "2025-09-16T12:23:56+00:00" }, + { + "name": "defuse/php-encryption", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/defuse/php-encryption.git", + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/f53396c2d34225064647a05ca76c1da9d99e5828", + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "paragonie/random_compat": ">= 2", + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^5|^6|^7|^8|^9|^10", + "yoast/phpunit-polyfills": "^2.0.0" + }, + "bin": [ + "bin/generate-defuse-key" + ], + "type": "library", + "autoload": { + "psr-4": { + "Defuse\\Crypto\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Hornby", + "email": "taylor@defuse.ca", + "homepage": "https://defuse.ca/" + }, + { + "name": "Scott Arciszewski", + "email": "info@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "Secure PHP Encryption Library", + "keywords": [ + "aes", + "authenticated encryption", + "cipher", + "crypto", + "cryptography", + "encrypt", + "encryption", + "openssl", + "security", + "symmetric key cryptography" + ], + "support": { + "issues": "https://github.com/defuse/php-encryption/issues", + "source": "https://github.com/defuse/php-encryption/tree/v2.4.0" + }, + "time": "2023-06-19T06:10:36+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "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": "^4.0.0" + }, + "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.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, { "name": "doctrine/collections", - "version": "2.6.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2" + "reference": "7c2f25ed928553a3de389ccb99aa46c0eedb2d4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/7713da39d8e237f28411d6a616a3dce5e20d5de2", - "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2", + "url": "https://api.github.com/repos/doctrine/collections/zipball/7c2f25ed928553a3de389ccb99aa46c0eedb2d4d", + "reference": "7c2f25ed928553a3de389ccb99aa46c0eedb2d4d", "shasum": "" }, "require": { "doctrine/deprecations": "^1", - "php": "^8.1", - "symfony/polyfill-php84": "^1.30" + "php": "^8.4", + "symfony/polyfill-php86": "^1.36" }, "require-dev": { "doctrine/coding-standard": "^14", "ext-json": "*", "phpstan/phpstan": "^2.1.30", "phpstan/phpstan-phpunit": "^2.0.7", - "phpunit/phpunit": "^10.5.58 || ^11.5.42 || ^12.4" + "phpunit/phpunit": "^12.4" }, "type": "library", "autoload": { @@ -916,7 +1253,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.6.0" + "source": "https://github.com/doctrine/collections/tree/3.1.0" }, "funding": [ { @@ -932,7 +1269,7 @@ "type": "tidelift" } ], - "time": "2026-01-15T10:01:58+00:00" + "time": "2026-04-29T20:41:02+00:00" }, { "name": "doctrine/deprecations", @@ -1074,27 +1411,25 @@ }, { "name": "doctrine/lexer", - "version": "3.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + "reference": "71d305eaa6480d3d3460c7d053d1da7749fa9cca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/71d305eaa6480d3d3460c7d053d1da7749fa9cca", + "reference": "71d305eaa6480d3d3460c7d053d1da7749fa9cca", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.21" + "doctrine/coding-standard": "^14", + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^10.5.58 || ^12.5.4" }, "type": "library", "autoload": { @@ -1131,7 +1466,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.1" + "source": "https://github.com/doctrine/lexer/tree/3.0.3" }, "funding": [ { @@ -1147,20 +1482,20 @@ "type": "tidelift" } ], - "time": "2024-02-05T11:56:58+00:00" + "time": "2026-10-01T06:59:29+00:00" }, { "name": "dompdf/dompdf", - "version": "v3.1.5", + "version": "v3.1.6", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "f11ead23a8a76d0ff9bbc6c7c8fd7e05ca328496" + "reference": "6d4b4eb8500f7a786da8868ba463a71b725a4005" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/f11ead23a8a76d0ff9bbc6c7c8fd7e05ca328496", - "reference": "f11ead23a8a76d0ff9bbc6c7c8fd7e05ca328496", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6d4b4eb8500f7a786da8868ba463a71b725a4005", + "reference": "6d4b4eb8500f7a786da8868ba463a71b725a4005", "shasum": "" }, "require": { @@ -1209,9 +1544,9 @@ "homepage": "https://github.com/dompdf/dompdf", "support": { "issues": "https://github.com/dompdf/dompdf/issues", - "source": "https://github.com/dompdf/dompdf/tree/v3.1.5" + "source": "https://github.com/dompdf/dompdf/tree/v3.1.6" }, - "time": "2026-03-03T13:54:37+00:00" + "time": "2026-07-20T12:29:38+00:00" }, { "name": "dompdf/php-font-lib", @@ -1304,6 +1639,70 @@ }, "time": "2026-01-02T16:01:13+00:00" }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "shasum": "" + }, + "require": { + "php": "^8.2|^8.3|^8.4|^8.5" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.32|^2.1.31", + "phpunit/phpunit": "^8.5.48|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "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.6.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2025-10-31T18:51:33+00:00" + }, { "name": "egulias/email-validator", "version": "4.0.4", @@ -1373,24 +1772,24 @@ }, { "name": "elvanto/litemoji", - "version": "4.3.0", + "version": "5.2.0", "source": { "type": "git", "url": "https://github.com/elvanto/litemoji.git", - "reference": "f13cf10686f7110a3b17d09de03050d0708840b8" + "reference": "859dbcaa31ac5eb99c0811a981ba9d9ca3dab1c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elvanto/litemoji/zipball/f13cf10686f7110a3b17d09de03050d0708840b8", - "reference": "f13cf10686f7110a3b17d09de03050d0708840b8", + "url": "https://api.github.com/repos/elvanto/litemoji/zipball/859dbcaa31ac5eb99c0811a981ba9d9ca3dab1c1", + "reference": "859dbcaa31ac5eb99c0811a981ba9d9ca3dab1c1", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": ">=7.3" + "php": ">=7.4" }, "require-dev": { - "milesj/emojibase": "7.0.*", + "milesj/emojibase": "^16.0.3", "phpunit/phpunit": "^9.0" }, "type": "library", @@ -1410,22 +1809,22 @@ ], "support": { "issues": "https://github.com/elvanto/litemoji/issues", - "source": "https://github.com/elvanto/litemoji/tree/4.3.0" + "source": "https://github.com/elvanto/litemoji/tree/5.2.0" }, - "time": "2022-10-28T02:32:19+00:00" + "time": "2025-07-15T04:24:11+00:00" }, { "name": "enshrined/svg-sanitize", - "version": "0.22.0", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/darylldoyle/svg-sanitizer.git", - "reference": "0afa95ea74be155a7bcd6c6fb60c276c39984500" + "reference": "f3300fcd1bbf67d205b52217c75d0f7d6a8c47ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/0afa95ea74be155a7bcd6c6fb60c276c39984500", - "reference": "0afa95ea74be155a7bcd6c6fb60c276c39984500", + "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/f3300fcd1bbf67d205b52217c75d0f7d6a8c47ff", + "reference": "f3300fcd1bbf67d205b52217c75d0f7d6a8c47ff", "shasum": "" }, "require": { @@ -1455,89 +1854,235 @@ "description": "An SVG sanitizer for PHP", "support": { "issues": "https://github.com/darylldoyle/svg-sanitizer/issues", - "source": "https://github.com/darylldoyle/svg-sanitizer/tree/0.22.0" + "source": "https://github.com/darylldoyle/svg-sanitizer/tree/1.0.0" }, - "time": "2025-08-12T10:13:48+00:00" + "time": "2026-09-01T09:35:47+00:00" }, { - "name": "ezyang/htmlpurifier", - "version": "v4.19.0", + "name": "firebase/php-jwt", + "version": "v7.2.1", "source": { "type": "git", - "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf" + "url": "https://github.com/googleapis/php-jwt.git", + "reference": "0501f5729b9e2448516674aff07c7d1727869b8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/b287d2a16aceffbf6e0295559b39662612b77fcf", - "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf", + "url": "https://api.github.com/repos/googleapis/php-jwt/zipball/0501f5729b9e2448516674aff07c7d1727869b8e", + "reference": "0501f5729b9e2448516674aff07c7d1727869b8e", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" + "php": "^8.0" }, "require-dev": { - "cerdic/css-tidy": "^1.7 || ^2.0", - "simpletest/simpletest": "dev-master" + "guzzlehttp/guzzle": "^7.4||^8.0", + "phpfastcache/phpfastcache": "^9.2", + "phpseclib/phpseclib": "~3.0", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "^9.5", + "psr/cache": "^2.0||^3.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" }, "suggest": { - "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", - "ext-bcmath": "Used for unit conversion and imagecrash protection", - "ext-iconv": "Converts text to and from non-UTF-8 encodings", - "ext-tidy": "Used for pretty-printing HTML" + "ext-sodium": "Support EdDSA (Ed25519) signatures", + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present", + "phpseclib/phpseclib": "Support PS256 (RSASSA-PSS) signatures" }, "type": "library", + "extra": { + "component": { + "id": "jwt", + "path": "Jwt", + "entry": "README.md", + "target": "googleapis/php-jwt.git" + } + }, "autoload": { - "files": [ - "library/HTMLPurifier.composer.php" - ], - "psr-0": { - "HTMLPurifier": "library/" + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" }, - "exclude-from-classmap": [ - "/library/HTMLPurifier/Language/" - ] + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/googleapis/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/googleapis/php-jwt/issues", + "source": "https://github.com/googleapis/php-jwt/tree/v7.2.1" + }, + "time": "2026-09-28T17:51:46+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "shasum": "" + }, + "require": { + "php": "^8.1", + "symfony/http-foundation": "^5.4|^6.4|^7.3|^8" + }, + "require-dev": { + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1-or-later" + "MIT" ], "authors": [ { - "name": "Edward Z. Yang", - "email": "admin@htmlpurifier.org", - "homepage": "http://ezyang.com" + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" } ], - "description": "Standards compliant HTML filter written in PHP", - "homepage": "http://htmlpurifier.org/", + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", "keywords": [ - "html" + "cors", + "laravel", + "symfony" ], "support": { - "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.0" + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2025-12-03T09:33:47+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "adccca3324eece92ca35463648c12b9e6293c05b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/adccca3324eece92ca35463648c12b9e6293c05b", + "reference": "adccca3324eece92ca35463648c12b9e6293c05b", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.10" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.52 || ^9.6.34 || ^10.5.63 || ^11.5.55 || ^12.5.14" + }, + "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.2.0" }, - "time": "2025-10-17T16:34:55+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2026-08-24T09:06:52+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.14.0", + "version": "7.15.5", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "aef242412e13128b5049864867bb49fc37dd39de" + "reference": "ee80339fd9177ba44c49cdb653ff02a4d1106b9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aef242412e13128b5049864867bb49fc37dd39de", - "reference": "aef242412e13128b5049864867bb49fc37dd39de", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee80339fd9177ba44c49cdb653ff02a4d1106b9a", + "reference": "ee80339fd9177ba44c49cdb653ff02a4d1106b9a", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^2.5.1", - "guzzlehttp/psr7": "^2.12.4", + "guzzlehttp/promises": "^2.5.3", + "guzzlehttp/psr7": "^2.13.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.5 || ^3.0", @@ -1550,7 +2095,7 @@ "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "guzzle/client-integration-tests": "3.0.3", - "guzzlehttp/test-server": "^0.6", + "guzzlehttp/test-server": "^0.7", "php-http/message-factory": "^1.1", "phpunit/phpunit": "^8.5.52 || ^9.6.34", "psr/log": "^1.1 || ^2.0 || ^3.0" @@ -1630,7 +2175,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.14.0" + "source": "https://github.com/guzzle/guzzle/tree/7.15.5" }, "funding": [ { @@ -1646,20 +2191,20 @@ "type": "tidelift" } ], - "time": "2026-07-08T22:54:09+00:00" + "time": "2026-08-24T09:21:06+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.5.1", + "version": "2.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29" + "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/9ad1e4fc607446a055b95870c7f668e93b5cff29", - "reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29", + "url": "https://api.github.com/repos/guzzle/promises/zipball/cde49999552d185d64715fe9c1f77a2aadd2f9f1", + "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1", "shasum": "" }, "require": { @@ -1714,7 +2259,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.5.1" + "source": "https://github.com/guzzle/promises/tree/2.5.3" }, "funding": [ { @@ -1730,20 +2275,20 @@ "type": "tidelift" } ], - "time": "2026-07-08T15:48:39+00:00" + "time": "2026-08-24T09:11:28+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.12.4", + "version": "2.13.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c" + "reference": "95e7828100de18b4e269fb1703be530082d5166d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c", - "reference": "51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/95e7828100de18b4e269fb1703be530082d5166d", + "reference": "95e7828100de18b4e269fb1703be530082d5166d", "shasum": "" }, "require": { @@ -1833,7 +2378,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.12.4" + "source": "https://github.com/guzzle/psr7/tree/2.13.1" }, "funding": [ { @@ -1849,20 +2394,106 @@ "type": "tidelift" } ], - "time": "2026-07-08T15:56:20+00:00" + "time": "2026-08-24T09:13:11+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "7a466ad606491eb6528c717482f7cca77f1851f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/7a466ad606491eb6528c717482f7cca77f1851f3", + "reference": "7a466ad606491eb6528c717482f7cca77f1851f3", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "symfony/polyfill-php80": "^1.25" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^9.6.34", + "uri-template/tests": "1.0.2" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "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" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v2.0.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2026-08-24T17:13:02+00:00" }, { "name": "ibericode/vat", - "version": "2.1.2", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/ibericode/vat.git", - "reference": "6abfd3a579946347d9cb66883c75f49244da8f8c" + "reference": "319689c142ac5375dd211b436c27f7c6c4126804" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ibericode/vat/zipball/6abfd3a579946347d9cb66883c75f49244da8f8c", - "reference": "6abfd3a579946347d9cb66883c75f49244da8f8c", + "url": "https://api.github.com/repos/ibericode/vat/zipball/319689c142ac5375dd211b436c27f7c6c4126804", + "reference": "319689c142ac5375dd211b436c27f7c6c4126804", "shasum": "" }, "require": { @@ -1871,8 +2502,9 @@ "php": ">=8.2" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.54", - "phpunit/phpunit": "^11.1" + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^11.1", + "squizlabs/php_codesniffer": "^4.0" }, "suggest": { "ext-soap": "Needed to support VIES VAT number validation", @@ -1900,9 +2532,9 @@ ], "support": { "issues": "https://github.com/ibericode/vat/issues", - "source": "https://github.com/ibericode/vat/tree/2.1.2" + "source": "https://github.com/ibericode/vat/tree/2.2.1" }, - "time": "2026-02-24T17:50:33+00:00" + "time": "2026-10-08T13:09:52+00:00" }, { "name": "iio/libmergepdf", @@ -1963,40 +2595,53 @@ "time": "2020-12-07T12:18:49+00:00" }, { - "name": "illuminate/collections", - "version": "v10.49.0", + "name": "inertiajs/inertia-laravel", + "version": "v3.5.1", "source": { "type": "git", - "url": "https://github.com/illuminate/collections.git", - "reference": "6ae9c74fa92d4e1824d1b346cd435e8eacdc3232" + "url": "https://github.com/inertiajs/inertia-laravel.git", + "reference": "35a27ea62b8a53ec40269c4c675db5d9d0e02426" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/6ae9c74fa92d4e1824d1b346cd435e8eacdc3232", - "reference": "6ae9c74fa92d4e1824d1b346cd435e8eacdc3232", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/35a27ea62b8a53ec40269c4c675db5d9d0e02426", + "reference": "35a27ea62b8a53ec40269c4c675db5d9d0e02426", "shasum": "" }, "require": { - "illuminate/conditionable": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/macroable": "^10.0", - "php": "^8.1" + "ext-json": "*", + "laravel/framework": "^11.35|^12.0|^13.0", + "php": "^8.2.0", + "symfony/console": "^7.0|^8.0" + }, + "conflict": { + "laravel/boost": "<2.5.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.15.2|^8.0", + "larastan/larastan": "^3.0", + "laravel/pint": "^1.16", + "mockery/mockery": "^1.3.3", + "orchestra/testbench": "^9.2|^10.0|^11.0", + "phpunit/phpunit": "^11.5|^12.0" }, "suggest": { - "symfony/var-dumper": "Required to use the dump method (^6.2)." + "ext-pcntl": "Recommended when running the Inertia SSR server via the `inertia:start-ssr` artisan command." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "10.x-dev" + "laravel": { + "providers": [ + "Inertia\\ServiceProvider" + ] } }, "autoload": { "files": [ - "helpers.php" + "./helpers.php" ], "psr-4": { - "Illuminate\\Support\\": "" + "Inertia\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2005,44 +2650,49 @@ ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" + "name": "Jonathan Reinink", + "email": "jonathan@reinink.ca", + "homepage": "https://reinink.ca" } ], - "description": "The Illuminate Collections package.", - "homepage": "https://laravel.com", + "description": "The Laravel adapter for Inertia.js.", + "keywords": [ + "inertia", + "laravel" + ], "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" + "issues": "https://github.com/inertiajs/inertia-laravel/issues", + "source": "https://github.com/inertiajs/inertia-laravel/tree/v3.5.1" }, - "time": "2025-09-08T19:05:53+00:00" + "time": "2026-10-01T10:38:10+00:00" }, { - "name": "illuminate/conditionable", - "version": "v10.49.0", + "name": "intervention/gif", + "version": "5.0.1", "source": { "type": "git", - "url": "https://github.com/illuminate/conditionable.git", - "reference": "47c700320b7a419f0d188d111f3bbed978fcbd3f" + "url": "https://github.com/Intervention/gif.git", + "reference": "bb395af960deffe64d70c976b4df9283f68e762d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/conditionable/zipball/47c700320b7a419f0d188d111f3bbed978fcbd3f", - "reference": "47c700320b7a419f0d188d111f3bbed978fcbd3f", + "url": "https://api.github.com/repos/Intervention/gif/zipball/bb395af960deffe64d70c976b4df9283f68e762d", + "reference": "bb395af960deffe64d70c976b4df9283f68e762d", "shasum": "" }, "require": { - "php": "^8.0.2" + "php": "^8.3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "10.x-dev" - } + "require-dev": { + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^12.0", + "slevomat/coding-standard": "~8.0", + "squizlabs/php_codesniffer": "^4" }, + "type": "library", "autoload": { "psr-4": { - "Illuminate\\Support\\": "" + "Intervention\\Gif\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2051,46 +2701,321 @@ ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" } ], - "description": "The Illuminate Conditionable package.", - "homepage": "https://laravel.com", + "description": "PHP GIF Encoder/Decoder", + "homepage": "https://github.com/intervention/gif", + "keywords": [ + "animation", + "gd", + "gif", + "image" + ], "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" + "issues": "https://github.com/Intervention/gif/issues", + "source": "https://github.com/Intervention/gif/tree/5.0.1" }, - "time": "2025-03-24T11:47:24+00:00" + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + }, + { + "url": "https://ko-fi.com/interventionphp", + "type": "ko_fi" + } + ], + "time": "2026-05-03T06:04:47+00:00" }, { - "name": "illuminate/contracts", - "version": "v10.49.0", + "name": "intervention/image", + "version": "4.3.5", "source": { "type": "git", - "url": "https://github.com/illuminate/contracts.git", - "reference": "2393ef579e020d88e24283913c815c3e2c143323" + "url": "https://github.com/Intervention/image.git", + "reference": "765c15a8204877ae8f408f34953bf72f1b416d55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/2393ef579e020d88e24283913c815c3e2c143323", - "reference": "2393ef579e020d88e24283913c815c3e2c143323", + "url": "https://api.github.com/repos/Intervention/image/zipball/765c15a8204877ae8f408f34953bf72f1b416d55", + "reference": "765c15a8204877ae8f408f34953bf72f1b416d55", "shasum": "" }, "require": { - "php": "^8.1", - "psr/container": "^1.1.1|^2.0.1", - "psr/simple-cache": "^1.0|^2.0|^3.0" + "ext-mbstring": "*", + "intervention/gif": "^5", + "php": "^8.3" + }, + "require-dev": { + "intervention/coding-standard": "^1", + "mockery/mockery": "^1.6", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^12.0" + }, + "suggest": { + "ext-exif": "Recommended to be able to read EXIF data properly." + }, + "type": "library", + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io" + } + ], + "description": "PHP Image Processing", + "homepage": "https://image.intervention.io", + "keywords": [ + "gd", + "image", + "imagick", + "resize", + "thumbnail", + "watermark" + ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/4.3.5" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + }, + { + "url": "https://ko-fi.com/interventionphp", + "type": "ko_fi" + } + ], + "time": "2026-10-10T05:44:05+00:00" + }, + { + "name": "laravel/framework", + "version": "v13.35.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "a413a9da94884e5e9d58f4e6612884f712827804" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/a413a9da94884e5e9d58f4e6612884f712827804", + "reference": "a413a9da94884e5e9d58f4e6612884f712827804", + "shasum": "" + }, + "require": { + "brick/math": "^0.14.2 || ^0.15 || ^0.16 || ^0.17 || ^0.18 || ^0.19 || ^0.20 || ^1.0", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.4", + "egulias/email-validator": "^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8.2 || ^8.0", + "guzzlehttp/promises": "^2.0.3 || ^3.0", + "guzzlehttp/psr7": "^2.9 || ^3.0", + "guzzlehttp/uri-template": "^1.0 || ^2.0", + "laravel/prompts": "^0.3.11", + "laravel/serializable-closure": "^2.0.10", + "league/commonmark": "^2.8.1", + "league/flysystem": "^3.25.1", + "league/flysystem-local": "^3.25.1", + "league/uri": "^7.5.1", + "monolog/monolog": "^3.10", + "nesbot/carbon": "^3.8.4", + "nunomaduro/termwind": "^2.0", + "php": "^8.3", + "psr/container": "^1.1.1 || ^2.0.1", + "psr/http-message": "^1.0 || ^2.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^7.4.0 || ^8.0.0", + "symfony/error-handler": "^7.4.0 || ^8.0.0", + "symfony/finder": "^7.4.0 || ^8.0.0", + "symfony/http-foundation": "^7.4.0 || ^8.0.0", + "symfony/http-kernel": "^7.4.0 || ^8.0.0", + "symfony/mailer": "^7.4.0 || ^8.0.0", + "symfony/mime": "^7.4.0 || ^8.0.0", + "symfony/polyfill-php84": "^1.36", + "symfony/polyfill-php85": "^1.36", + "symfony/polyfill-php86": "^1.36", + "symfony/process": "^7.4.5 || ^8.0.5", + "symfony/routing": "^7.4.0 || ^8.0.0", + "symfony/uid": "^7.4.0 || ^8.0.0", + "symfony/var-dumper": "^7.4.0 || ^8.0.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.6.1", + "voku/portable-ascii": "^2.0.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1 || 2.0", + "psr/log-implementation": "1.0 || 2.0 || 3.0", + "psr/simple-cache-implementation": "1.0 || 2.0 || 3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/concurrency": "self.version", + "illuminate/conditionable": "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/image": "self.version", + "illuminate/json-schema": "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/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/reflection": "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", + "spatie/once": "*" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.322.9", + "ext-gmp": "*", + "fakerphp/faker": "^1.24", + "intervention/image": "^4.0", + "laravel/pint": "^1.18", + "league/flysystem-aws-s3-v3": "^3.25.1", + "league/flysystem-ftp": "^3.25.1", + "league/flysystem-path-prefixing": "^3.25.1", + "league/flysystem-read-only": "^3.25.1", + "league/flysystem-sftp-v3": "^3.25.1", + "mockery/mockery": "^1.6.10", + "opis/json-schema": "^2.4.1", + "orchestra/testbench-core": "^11.5.0", + "pda/pheanstalk": "^7.0.0 || ^8.0.0", + "php-http/discovery": "^1.15", + "phpstan/phpstan": "2.2.15", + "phpunit/phpunit": "^11.5.50 || ^12.5.8 || ^13.0.3", + "predis/predis": "^2.3 || ^3.0", + "rector/rector": "2.6.3", + "resend/resend-php": "^1.0", + "symfony/cache": "^7.4.0 || ^8.0.0", + "symfony/http-client": "^7.4.0 || ^8.0.0", + "symfony/mercure": "^0.8.0", + "symfony/psr-http-message-bridge": "^7.4.0 || ^8.0.0", + "symfony/translation": "^7.4.0 || ^8.0.0", + "web-token/jwt-library": "^4.1" + }, + "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.322.9).", + "brianium/paratest": "Required to run tests in parallel (^7.0 || ^8.0).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "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 and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "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 || ^6.0).", + "fakerphp/faker": "Required to generate fake data using the fake() helper (^1.23).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "intervention/image": "Required to use the image processing features (^4.0).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).", + "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", + "mockery/mockery": "Required to use mocking (^1.6).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^7.0 || ^8.0).", + "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", + "phpunit/phpunit": "Required to use assertions and run tests (^11.5.50 || ^12.5.8 || ^13.0.3).", + "predis/predis": "Required to use the predis connector (^2.3 || ^3.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0 || ^7.0).", + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0 || ^1.0).", + "spatie/fork": "Required to use the 'fork' concurrency driver (^1.2).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.4 || ^8.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.4 || ^8.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.4 || ^8.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.4 || ^8.0).", + "symfony/mercure": "Required to use the Mercure broadcast driver (^0.8).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.4 || ^8.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.4 || ^8.0).", + "web-token/jwt-library": "Required to sign Mercure JWTs and use end-to-end encrypted channels (^4.1)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "10.x-dev" + "dev-master": "13.0.x-dev" } }, "autoload": { + "files": [ + "src/Illuminate/Collections/functions.php", + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Log/functions.php", + "src/Illuminate/Reflection/helpers.php", + "src/Illuminate/Support/functions.php", + "src/Illuminate/Support/helpers.php" + ], "psr-4": { - "Illuminate\\Contracts\\": "" + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/", + "src/Illuminate/Reflection/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -2103,40 +3028,70 @@ "email": "taylor@laravel.com" } ], - "description": "The Illuminate Contracts package.", + "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": "2025-03-24T11:47:24+00:00" + "time": "2026-10-06T13:52:37+00:00" }, { - "name": "illuminate/macroable", - "version": "v10.49.0", + "name": "laravel/passport", + "version": "v13.9.0", "source": { "type": "git", - "url": "https://github.com/illuminate/macroable.git", - "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27" + "url": "https://github.com/laravel/passport.git", + "reference": "fe069acef0e1be32fbd80d33304f7affaa85f0f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/macroable/zipball/dff667a46ac37b634dcf68909d9d41e94dc97c27", - "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27", + "url": "https://api.github.com/repos/laravel/passport/zipball/fe069acef0e1be32fbd80d33304f7affaa85f0f1", + "reference": "fe069acef0e1be32fbd80d33304f7affaa85f0f1", "shasum": "" }, "require": { - "php": "^8.1" + "ext-json": "*", + "ext-openssl": "*", + "firebase/php-jwt": "^6.4|^7.0", + "illuminate/auth": "^11.35|^12.0|^13.0", + "illuminate/console": "^11.35|^12.0|^13.0", + "illuminate/container": "^11.35|^12.0|^13.0", + "illuminate/contracts": "^11.35|^12.0|^13.0", + "illuminate/cookie": "^11.35|^12.0|^13.0", + "illuminate/database": "^11.35|^12.0|^13.0", + "illuminate/encryption": "^11.35|^12.0|^13.0", + "illuminate/http": "^11.35|^12.0|^13.0", + "illuminate/support": "^11.35|^12.0|^13.0", + "league/oauth2-server": "^9.2", + "php": "^8.2", + "php-http/discovery": "^1.20", + "phpseclib/phpseclib": "^4.0", + "psr/http-factory-implementation": "*", + "symfony/console": "^7.1|^8.0", + "symfony/psr-http-message-bridge": "^7.1|^8.0" + }, + "require-dev": { + "jasonmccreary/double": "^1.0", + "orchestra/testbench": "^9.15|^10.8|^11.0", + "phpstan/phpstan": "^2.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "10.x-dev" + "laravel": { + "providers": [ + "Laravel\\Passport\\PassportServiceProvider" + ] } }, "autoload": { "psr-4": { - "Illuminate\\Support\\": "" + "Laravel\\Passport\\": "src/", + "Laravel\\Passport\\Database\\Factories\\": "database/factories/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2149,130 +3104,109 @@ "email": "taylor@laravel.com" } ], - "description": "The Illuminate Macroable package.", - "homepage": "https://laravel.com", + "description": "Laravel Passport provides OAuth2 server support to Laravel.", + "keywords": [ + "laravel", + "oauth", + "passport" + ], "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" + "issues": "https://github.com/laravel/passport/issues", + "source": "https://github.com/laravel/passport" }, - "time": "2023-06-05T12:46:42+00:00" + "time": "2026-09-28T14:57:46+00:00" }, { - "name": "illuminate/support", - "version": "v10.49.0", + "name": "laravel/prompts", + "version": "v0.3.25", "source": { "type": "git", - "url": "https://github.com/illuminate/support.git", - "reference": "28b505e671dbe119e4e32a75c78f87189d046e39" + "url": "https://github.com/laravel/prompts.git", + "reference": "21b7b49d60fcb700016dd27b582ae739c75de816" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/28b505e671dbe119e4e32a75c78f87189d046e39", - "reference": "28b505e671dbe119e4e32a75c78f87189d046e39", + "url": "https://api.github.com/repos/laravel/prompts/zipball/21b7b49d60fcb700016dd27b582ae739c75de816", + "reference": "21b7b49d60fcb700016dd27b582ae739c75de816", "shasum": "" }, "require": { - "doctrine/inflector": "^2.0", - "ext-ctype": "*", - "ext-filter": "*", + "composer-runtime-api": "^2.2", "ext-mbstring": "*", - "illuminate/collections": "^10.0", - "illuminate/conditionable": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/macroable": "^10.0", - "nesbot/carbon": "^2.67", "php": "^8.1", - "voku/portable-ascii": "^2.0" + "symfony/console": "^6.2|^7.0|^8.0" }, "conflict": { - "tightenco/collect": "<5.5.33" + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "illuminate/collections": "^10.0|^11.0|^12.0|^13.0", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3|^3.4|^4.0", + "phpstan/phpstan": "^1.12.28", + "phpstan/phpstan-mockery": "^1.1.3" }, "suggest": { - "illuminate/filesystem": "Required to use the composer class (^10.0).", - "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.6).", - "ramsey/uuid": "Required to use Str::uuid() (^4.7).", - "symfony/process": "Required to use the composer class (^6.2).", - "symfony/uid": "Required to use Str::ulid() (^6.2).", - "symfony/var-dumper": "Required to use the dd function (^6.2).", - "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.4.1)." + "ext-pcntl": "Required for the spinner to be animated." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "10.x-dev" + "dev-main": "0.3.x-dev" } }, "autoload": { "files": [ - "helpers.php" + "src/helpers.php" ], "psr-4": { - "Illuminate\\Support\\": "" + "Laravel\\Prompts\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Support package.", - "homepage": "https://laravel.com", + "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" + "source": "https://github.com/laravel/prompts/tree/v0.3.25" }, - "time": "2025-09-08T19:05:53+00:00" + "time": "2026-10-06T02:25:49+00:00" }, { - "name": "league/uri", - "version": "7.8.1", + "name": "laravel/serializable-closure", + "version": "v2.1.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/uri.git", - "reference": "08cf38e3924d4f56238125547b5720496fac8fd4" + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "2d5869a838bbcf37e0d8b0568fc41914e81374b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/08cf38e3924d4f56238125547b5720496fac8fd4", - "reference": "08cf38e3924d4f56238125547b5720496fac8fd4", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/2d5869a838bbcf37e0d8b0568fc41914e81374b5", + "reference": "2d5869a838bbcf37e0d8b0568fc41914e81374b5", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.8.1", - "php": "^8.1", - "psr/http-factory": "^1" - }, - "conflict": { - "league/uri-schemes": "^1.0" + "php": "^8.1" }, - "suggest": { - "ext-bcmath": "to improve IPV4 host parsing", - "ext-dom": "to convert the URI into an HTML anchor tag", - "ext-fileinfo": "to create Data URI from file contennts", - "ext-gmp": "to improve IPV4 host parsing", - "ext-intl": "to handle IDN host with the best performance", - "ext-uri": "to use the PHP native URI class", - "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", - "league/uri-components": "to provide additional tools to manipulate URI objects components", - "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", - "php-64bit": "to improve IPV4 host parsing", - "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", - "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + "require-dev": { + "illuminate/support": "^10.0|^11.0|^12.0|^13.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0|^4.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0|^8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "League\\Uri\\": "" + "Laravel\\SerializableClosure\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2281,87 +3215,66 @@ ], "authors": [ { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://nyamsprod.com" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" } ], - "description": "URI manipulation library", - "homepage": "https://uri.thephpleague.com", + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", "keywords": [ - "URN", - "data-uri", - "file-uri", - "ftp", - "hostname", - "http", - "https", - "middleware", - "parse_str", - "parse_url", - "psr-7", - "query-string", - "querystring", - "rfc2141", - "rfc3986", - "rfc3987", - "rfc6570", - "rfc8141", - "uri", - "uri-template", - "url", - "ws" + "closure", + "laravel", + "serializable" ], "support": { - "docs": "https://uri.thephpleague.com", - "forum": "https://thephpleague.slack.com", - "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.8.1" + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" }, - "funding": [ - { - "url": "https://github.com/sponsors/nyamsprod", - "type": "github" - } - ], - "time": "2026-03-15T20:22:25+00:00" + "time": "2026-09-22T14:32:34+00:00" }, { - "name": "league/uri-interfaces", - "version": "7.8.1", + "name": "laravel/wayfinder", + "version": "v0.1.21", "source": { "type": "git", - "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928" + "url": "https://github.com/laravel/wayfinder.git", + "reference": "a85a996cea189f59cac14854f8b13319a29007f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/85d5c77c5d6d3af6c54db4a78246364908f3c928", - "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928", + "url": "https://api.github.com/repos/laravel/wayfinder/zipball/a85a996cea189f59cac14854f8b13319a29007f3", + "reference": "a85a996cea189f59cac14854f8b13319a29007f3", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^8.1", - "psr/http-message": "^1.1 || ^2.0" + "illuminate/console": "^11.0|^12.0|^13.0", + "illuminate/filesystem": "^11.0|^12.0|^13.0", + "illuminate/routing": "^11.0|^12.0|^13.0", + "illuminate/support": "^11.0|^12.0|^13.0", + "php": "^8.2", + "phpstan/phpdoc-parser": "^2.3" }, - "suggest": { - "ext-bcmath": "to improve IPV4 host parsing", - "ext-gmp": "to improve IPV4 host parsing", - "ext-intl": "to handle IDN host with the best performance", - "php-64bit": "to improve IPV4 host parsing", - "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", - "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + "conflict": { + "laravel/boost": "<2.5.0" + }, + "require-dev": { + "laravel/pint": "^1.21", + "orchestra/testbench": "^11.0|^10.1|^9.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "7.x-dev" + "laravel": { + "providers": [ + "Laravel\\Wayfinder\\WayfinderServiceProvider" + ] } }, "autoload": { "psr-4": { - "League\\Uri\\": "" + "Laravel\\Wayfinder\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2370,261 +3283,321 @@ ], "authors": [ { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://nyamsprod.com" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" } ], - "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", - "homepage": "https://uri.thephpleague.com", + "description": "Generate TypeScript representations of your Laravel actions and routes.", + "homepage": "https://github.com/laravel/wayfinder", "keywords": [ - "data-uri", - "file-uri", - "ftp", - "hostname", - "http", - "https", - "parse_str", - "parse_url", - "psr-7", - "query-string", - "querystring", - "rfc3986", - "rfc3987", - "rfc6570", - "uri", - "url", - "ws" + "laravel", + "php", + "routes", + "typescript" ], "support": { - "docs": "https://uri.thephpleague.com", - "forum": "https://thephpleague.slack.com", - "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.1" + "issues": "https://github.com/laravel/wayfinder/issues", + "source": "https://github.com/laravel/wayfinder" }, - "funding": [ - { - "url": "https://github.com/sponsors/nyamsprod", - "type": "github" - } - ], - "time": "2026-03-08T20:05:35+00:00" + "time": "2026-08-04T21:55:43+00:00" }, { - "name": "maennchen/zipstream-php", - "version": "3.1.2", + "name": "lcobucci/jwt", + "version": "5.6.1", "source": { "type": "git", - "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f" + "url": "https://github.com/lcobucci/jwt.git", + "reference": "482760068e5a55a9045feddb3e2fc3f878cbd577" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f", - "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/482760068e5a55a9045feddb3e2fc3f878cbd577", + "reference": "482760068e5a55a9045feddb3e2fc3f878cbd577", "shasum": "" }, "require": { - "ext-mbstring": "*", - "ext-zlib": "*", - "php-64bit": "^8.2" + "ext-openssl": "*", + "ext-sodium": "*", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", + "psr/clock": "^1.0" }, "require-dev": { - "brianium/paratest": "^7.7", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.16", - "guzzlehttp/guzzle": "^7.5", - "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.5", - "phpunit/phpunit": "^11.0", - "vimeo/psalm": "^6.0" + "infection/infection": "^0.29", + "lcobucci/clock": "^3.2", + "lcobucci/coding-standard": "^11.0", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.10.7", + "phpstan/phpstan-deprecation-rules": "^1.1.3", + "phpstan/phpstan-phpunit": "^1.3.10", + "phpstan/phpstan-strict-rules": "^1.5.0", + "phpunit/phpunit": "^11.1" }, "suggest": { - "guzzlehttp/psr7": "^2.4", - "psr/http-message": "^2.0" + "lcobucci/clock": ">= 3.2" }, "type": "library", "autoload": { "psr-4": { - "ZipStream\\": "src/" + "Lcobucci\\JWT\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Paul Duncan", - "email": "pabs@pablotron.org" - }, - { - "name": "Jonatan Männchen", - "email": "jonatan@maennchen.ch" - }, - { - "name": "Jesse Donat", - "email": "donatj@gmail.com" - }, - { - "name": "András Kolesár", - "email": "kolesar@kolesar.hu" + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com", + "role": "Developer" } ], - "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "description": "A simple library to work with JSON Web Token and JSON Web Signature", "keywords": [ - "stream", - "zip" + "JWS", + "jwt" ], "support": { - "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2" + "issues": "https://github.com/lcobucci/jwt/issues", + "source": "https://github.com/lcobucci/jwt/tree/5.6.1" }, "funding": [ { - "url": "https://github.com/maennchen", + "url": "https://github.com/lcobucci", "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" } ], - "time": "2025-01-27T12:07:53+00:00" + "time": "2026-10-10T09:42:14+00:00" }, { - "name": "markbaker/complex", - "version": "3.0.2", + "name": "league/commonmark", + "version": "2.10.3", "source": { "type": "git", - "url": "https://github.com/MarkBaker/PHPComplex.git", - "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9" + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "6efbd9c472b91db0a3350fcd601c8332c2382e1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", - "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/6efbd9c472b91db0a3350fcd601c8332c2382e1f", + "reference": "6efbd9c472b91db0a3350fcd601c8332c2382e1f", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "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": { - "dealerdirect/phpcodesniffer-composer-installer": "dev-master", - "phpcompatibility/php-compatibility": "^9.3", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "squizlabs/php_codesniffer": "^3.7" + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", + "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 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^2.0.0", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 | ^7.0 || ^8.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0 || ^8.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0 || ^8.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.11-dev" + } + }, "autoload": { "psr-4": { - "Complex\\": "classes/src/" + "League\\CommonMark\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mark Baker", - "email": "mark@lange.demon.co.uk" + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" } ], - "description": "PHP Class for working with complex numbers", - "homepage": "https://github.com/MarkBaker/PHPComplex", + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", "keywords": [ - "complex", - "mathematics" + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" ], "support": { - "issues": "https://github.com/MarkBaker/PHPComplex/issues", - "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2" + "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" }, - "time": "2022-12-06T16:21:08+00:00" + "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": "2026-09-21T13:07:34+00:00" }, { - "name": "markbaker/matrix", - "version": "3.0.1", + "name": "league/config", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/MarkBaker/PHPMatrix.git", - "reference": "728434227fe21be27ff6d86621a1b13107a2562c" + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", - "reference": "728434227fe21be27ff6d86621a1b13107a2562c", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "dev-master", - "phpcompatibility/php-compatibility": "^9.3", - "phpdocumentor/phpdocumentor": "2.*", - "phploc/phploc": "^4.0", - "phpmd/phpmd": "2.*", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "sebastian/phpcpd": "^4.0", - "squizlabs/php_codesniffer": "^3.7" + "phpstan/phpstan": "^1.8.2", + "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": { - "Matrix\\": "classes/src/" + "League\\Config\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mark Baker", - "email": "mark@demon-angel.eu" + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" } ], - "description": "PHP Class for working with matrices", - "homepage": "https://github.com/MarkBaker/PHPMatrix", + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", "keywords": [ - "mathematics", - "matrix", - "vector" + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" ], "support": { - "issues": "https://github.com/MarkBaker/PHPMatrix/issues", - "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1" + "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" }, - "time": "2022-12-02T22:17:43+00:00" + "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": "2022-12-11T20:36:23+00:00" }, { - "name": "masterminds/html5", - "version": "2.10.1", + "name": "league/event", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "fd5018f6815fff903946d0564977b44ce8010e29" + "url": "https://github.com/thephpleague/event.git", + "reference": "ec38ff7ea10cad7d99a79ac937fbcffb9334c210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fd5018f6815fff903946d0564977b44ce8010e29", - "reference": "fd5018f6815fff903946d0564977b44ce8010e29", + "url": "https://api.github.com/repos/thephpleague/event/zipball/ec38ff7ea10cad7d99a79ac937fbcffb9334c210", + "reference": "ec38ff7ea10cad7d99a79ac937fbcffb9334c210", "shasum": "" }, "require": { - "ext-dom": "*", - "php": ">=5.3.0" + "php": ">=7.2.0", + "psr/event-dispatcher": "^1.0" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9 || ^10" + "friendsofphp/php-cs-fixer": "^2.16", + "phpstan/phpstan": "^0.12.45", + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "3.0-dev" } }, "autoload": { "psr-4": { - "Masterminds\\": "src" + "League\\Event\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2633,59 +3606,73 @@ ], "authors": [ { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" + "name": "Frank de Jonge", + "email": "info@frenky.net" } ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", + "description": "Event package", "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" + "emitter", + "event", + "listener" ], "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.10.1" + "issues": "https://github.com/thephpleague/event/issues", + "source": "https://github.com/thephpleague/event/tree/3.0.3" }, - "time": "2026-06-23T18:43:15+00:00" + "time": "2024-09-04T16:06:53+00:00" }, { - "name": "mikehaertl/php-shellcommand", - "version": "1.7.0", + "name": "league/flysystem", + "version": "3.36.0", "source": { "type": "git", - "url": "https://github.com/mikehaertl/php-shellcommand.git", - "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545" + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "f7fb152932f30072d573510cbd4dd657d6475b25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mikehaertl/php-shellcommand/zipball/e79ea528be155ffdec6f3bf1a4a46307bb49e545", - "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f7fb152932f30072d573510cbd4dd657d6475b25", + "reference": "f7fb152932f30072d573510cbd4dd657d6475b25", "shasum": "" }, "require": { - "php": ">= 5.3.0" + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" }, "require-dev": { - "phpunit/phpunit": ">4.0 <=9.4" + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3|^2", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2|^2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" }, "type": "library", "autoload": { "psr-4": { - "mikehaertl\\shellcommand\\": "src/" + "League\\Flysystem\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2694,76 +3681,54 @@ ], "authors": [ { - "name": "Michael Härtl", - "email": "haertl.mike@gmail.com" + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" } ], - "description": "An object oriented interface to shell commands", + "description": "File storage abstraction for PHP", "keywords": [ - "shell" + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" ], "support": { - "issues": "https://github.com/mikehaertl/php-shellcommand/issues", - "source": "https://github.com/mikehaertl/php-shellcommand/tree/1.7.0" + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.36.0" }, - "time": "2023-04-19T08:25:22+00:00" + "time": "2026-09-02T08:00:27+00:00" }, { - "name": "moneyphp/money", - "version": "v4.9.0", + "name": "league/flysystem-local", + "version": "3.35.3", "source": { "type": "git", - "url": "https://github.com/moneyphp/money.git", - "reference": "d49ee625c6ba79b9d7a228ce153b02fc1032152b" + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "a099b24dce160f3b2239043d13d47c4a1a214ea4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/moneyphp/money/zipball/d49ee625c6ba79b9d7a228ce153b02fc1032152b", - "reference": "d49ee625c6ba79b9d7a228ce153b02fc1032152b", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/a099b24dce160f3b2239043d13d47c4a1a214ea4", + "reference": "a099b24dce160f3b2239043d13d47c4a1a214ea4", "shasum": "" }, "require": { - "ext-bcmath": "*", - "ext-filter": "*", - "ext-json": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" - }, - "require-dev": { - "cache/taggable-cache": "^1.1.0", - "doctrine/coding-standard": "^12.0", - "doctrine/instantiator": "^1.5.0 || ^2.0", - "ext-gmp": "*", - "ext-intl": "*", - "florianv/exchanger": "^2.8.1", - "florianv/swap": "^4.3.0", - "moneyphp/crypto-currencies": "^1.1.0", - "moneyphp/iso-currencies": "^3.4", - "php-http/message": "^1.16.0", - "php-http/mock-client": "^1.6.0", - "phpbench/phpbench": "^1.2.5", - "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^2.1.9", - "phpstan/phpstan-phpunit": "^2.0", - "phpunit/phpunit": "^10.5.9", - "psr/cache": "^1.0.1 || ^2.0 || ^3.0", - "ticketswap/phpstan-error-formatter": "^1.1" - }, - "suggest": { - "ext-gmp": "Calculate without integer limits", - "ext-intl": "Format Money objects with intl", - "florianv/exchanger": "Exchange rates library for PHP", - "florianv/swap": "Exchange rates library for PHP", - "psr/cache-implementation": "Used for Currency caching" + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Money\\": "src/" + "League\\Flysystem\\Local\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2772,99 +3737,45 @@ ], "authors": [ { - "name": "Mathias Verraes", - "email": "mathias@verraes.net", - "homepage": "http://verraes.net" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "Frederik Bosch", - "email": "f.bosch@genkgo.nl" + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" } ], - "description": "PHP implementation of Fowler's Money pattern", - "homepage": "http://moneyphp.org", + "description": "Local filesystem adapter for Flysystem.", "keywords": [ - "Value Object", - "money", - "vo" + "Flysystem", + "file", + "files", + "filesystem", + "local" ], "support": { - "issues": "https://github.com/moneyphp/money/issues", - "source": "https://github.com/moneyphp/money/tree/v4.9.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.35.3" }, - "time": "2026-05-04T20:23:15+00:00" + "time": "2026-08-12T13:29:21+00:00" }, { - "name": "monolog/monolog", - "version": "3.10.0", + "name": "league/flysystem-path-prefixing", + "version": "3.31.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" + "url": "https://github.com/thephpleague/flysystem-path-prefixing.git", + "reference": "d7f667c2d9d6684b74f30c6ad81ae7a0c23232f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", - "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", + "url": "https://api.github.com/repos/thephpleague/flysystem-path-prefixing/zipball/d7f667c2d9d6684b74f30c6ad81ae7a0c23232f3", + "reference": "d7f667c2d9d6684b74f30c6ad81ae7a0c23232f3", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7 || ^8", - "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2.0", - "guzzlehttp/guzzle": "^7.4.5", - "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8 || ^2.0", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.8", - "phpstan/phpstan": "^2", - "phpstan/phpstan-deprecation-rules": "^2", - "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "^10.5.17 || ^11.0.7", - "predis/predis": "^1.1 || ^2", - "rollbar/rollbar": "^4.0", - "ruflin/elastica": "^7 || ^8", - "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" + "league/flysystem": "^3.10.0", + "php": "^8.0.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Monolog\\": "src/Monolog" + "League\\Flysystem\\PathPrefixing\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2873,96 +3784,49 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" } ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", + "description": "Path prefixing filesystem adapter for Flysystem.", "keywords": [ - "log", - "logging", - "psr-3" + "Flysystem", + "filesystem", + "prefix", + "prefixing" ], "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.10.0" + "source": "https://github.com/thephpleague/flysystem-path-prefixing/tree/3.31.0" }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2026-01-02T08:56:05+00:00" + "time": "2026-01-23T15:30:45+00:00" }, { - "name": "nesbot/carbon", - "version": "2.73.0", + "name": "league/mime-type-detection", + "version": "1.17.0", "source": { "type": "git", - "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", - "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/f5f47eff7c48ed1003069a2ca67f316fb4021c76", + "reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76", "shasum": "" }, "require": { - "carbonphp/carbon-doctrine-types": "*", - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "psr/clock": "^1.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "provide": { - "psr/clock-implementation": "1.0" + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", - "doctrine/orm": "^2.7 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "<6", - "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" + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0 || ^11.0 || ^12.0" }, - "bin": [ - "bin/carbon" - ], "type": "library", - "extra": { - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - }, - "branch-alias": { - "dev-2.x": "2.x-dev", - "dev-master": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Carbon\\": "src/Carbon/" + "League\\MimeTypeDetection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2971,70 +3835,75 @@ ], "authors": [ { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "https://markido.com" - }, - { - "name": "kylekatarnls", - "homepage": "https://github.com/kylekatarnls" + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" } ], - "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], + "description": "Mime-type detection for Flysystem", "support": { - "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.17.0" }, "funding": [ { - "url": "https://github.com/sponsors/kylekatarnls", + "url": "https://github.com/frankdejonge", "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", + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", "type": "tidelift" } ], - "time": "2025-01-08T20:10:23+00:00" + "time": "2026-07-09T11:49:27+00:00" }, { - "name": "paragonie/constant_time_encoding", - "version": "v3.1.3", + "name": "league/oauth2-server", + "version": "9.4.1", "source": { "type": "git", - "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" + "url": "https://github.com/thephpleague/oauth2-server.git", + "reference": "9d2f6fc0a0b5aa1bb02506971d3a4ecff2c6526c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", - "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/9d2f6fc0a0b5aa1bb02506971d3a4ecff2c6526c", + "reference": "9d2f6fc0a0b5aa1bb02506971d3a4ecff2c6526c", "shasum": "" }, "require": { - "php": "^8" + "defuse/php-encryption": "^2.4", + "ext-json": "*", + "ext-openssl": "*", + "lcobucci/jwt": "^5.6", + "league/event": "^3.0", + "league/uri": "^7.8", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", + "psr/clock": "^1.0", + "psr/http-message": "^2.0", + "psr/http-server-middleware": "^1.0" + }, + "replace": { + "league/oauth2server": "*", + "lncd/oauth2": "*" }, "require-dev": { - "infection/infection": "^0", - "nikic/php-fuzzer": "^0", - "phpunit/phpunit": "^9|^10|^11", - "vimeo/psalm": "^4|^5|^6" + "laminas/laminas-diactoros": "^3.8", + "paragonie/random_compat": "^9.99.100", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.38", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpstan/phpstan-phpunit": "^2.0.12", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^11.5.50", + "roave/security-advisories": "dev-master", + "slevomat/coding-standard": "^8.27.1", + "squizlabs/php_codesniffer": "^4.0" }, "type": "library", "autoload": { "psr-4": { - "ParagonIE\\ConstantTime\\": "src/" + "League\\OAuth2\\Server\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3043,66 +3912,92 @@ ], "authors": [ { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com", - "role": "Maintainer" + "name": "Alex Bilbie", + "email": "hello@alexbilbie.com", + "homepage": "http://www.alexbilbie.com", + "role": "Developer" }, { - "name": "Steve 'Sc00bz' Thomas", - "email": "steve@tobtu.com", - "homepage": "https://www.tobtu.com", - "role": "Original Developer" + "name": "Andy Millington", + "email": "andrew@noexceptions.io", + "homepage": "https://www.noexceptions.io", + "role": "Developer" } ], - "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "description": "A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.", + "homepage": "https://oauth2.thephpleague.com/", "keywords": [ - "base16", - "base32", - "base32_decode", - "base32_encode", - "base64", - "base64_decode", - "base64_encode", - "bin2hex", - "encoding", - "hex", - "hex2bin", - "rfc4648" + "Authentication", + "api", + "auth", + "authorisation", + "authorization", + "oauth", + "oauth 2", + "oauth 2.0", + "oauth2", + "protect", + "resource", + "secure", + "server" ], "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/constant_time_encoding/issues", - "source": "https://github.com/paragonie/constant_time_encoding" + "issues": "https://github.com/thephpleague/oauth2-server/issues", + "source": "https://github.com/thephpleague/oauth2-server/tree/9.4.1" }, - "time": "2025-09-24T15:06:41+00:00" + "funding": [ + { + "url": "https://github.com/sephster", + "type": "github" + } + ], + "time": "2026-06-25T15:24:07+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "league/uri", + "version": "7.8.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/thephpleague/uri.git", + "reference": "08cf38e3924d4f56238125547b5720496fac8fd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/08cf38e3924d4f56238125547b5720496fac8fd4", + "reference": "08cf38e3924d4f56238125547b5720496fac8fd4", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "league/uri-interfaces": "^7.8.1", + "php": "^8.1", + "psr/http-factory": "^1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", "extra": { "branch-alias": { - "dev-2.x": "2.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "League\\Uri\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -3111,66 +4006,87 @@ ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "URN", + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc2141", + "rfc3986", + "rfc3987", + "rfc6570", + "rfc8141", + "uri", + "uri-template", + "url", + "ws" ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.8.1" }, - "time": "2020-06-27T09:03:43+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-03-15T20:22:25+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.6.7", + "name": "league/uri-interfaces", + "version": "7.8.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "31a105931bc8ffa3a123383829772e832fd8d903" + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/31a105931bc8ffa3a123383829772e832fd8d903", - "reference": "31a105931bc8ffa3a123383829772e832fd8d903", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/85d5c77c5d6d3af6c54db4a78246364908f3c928", + "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.1", "ext-filter": "*", - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7|^2.0", - "webmozart/assert": "^1.9.1 || ^2" + "php": "^8.1", + "psr/http-message": "^1.1 || ^2.0" }, - "require-dev": { - "mockery/mockery": "~1.3.5 || ~1.6.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-webmozart-assert": "^1.2", - "phpunit/phpunit": "^9.5", - "psalm/phar": "^5.26" + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "League\\Uri\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -3179,60 +4095,83 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.7" + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.1" }, - "time": "2026-03-18T20:47:46+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-03-08T20:05:35+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.12.0", + "name": "maennchen/zipstream-php", + "version": "3.2.2", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195" + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195", - "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e", + "reference": "77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.3 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.18|^2.0" + "ext-mbstring": "*", + "ext-zlib": "*", + "php-64bit": "^8.3" }, "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" + "brianium/paratest": "^7.7", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.86", + "guzzlehttp/guzzle": "^7.5", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^12.0", + "vimeo/psalm": "^6.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" }, + "type": "library", "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "ZipStream\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3241,79 +4180,66 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0" + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.2.2" }, - "time": "2025-11-21T15:09:14+00:00" + "funding": [ + { + "url": "https://github.com/maennchen", + "type": "github" + } + ], + "time": "2026-04-11T18:38:28+00:00" }, { - "name": "phpoffice/phpspreadsheet", - "version": "5.8.0", + "name": "markbaker/complex", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "01964d92536edf1a3a874b9580a52824bebf6fbb" + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/01964d92536edf1a3a874b9580a52824bebf6fbb", - "reference": "01964d92536edf1a3a874b9580a52824bebf6fbb", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", "shasum": "" }, "require": { - "composer/pcre": "^1||^2||^3", - "ext-ctype": "*", - "ext-dom": "*", - "ext-fileinfo": "*", - "ext-filter": "*", - "ext-gd": "*", - "ext-iconv": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "ext-xml": "*", - "ext-xmlreader": "*", - "ext-xmlwriter": "*", - "ext-zip": "*", - "ext-zlib": "*", - "maennchen/zipstream-php": "^2.1 || ^3.0", - "markbaker/complex": "^3.0", - "markbaker/matrix": "^3.0", - "php": "^8.1", - "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "dev-main", - "dompdf/dompdf": "^2.0 || ^3.0", - "ext-intl": "*", - "friendsofphp/php-cs-fixer": "^3.2", - "mitoteam/jpgraph": "^10.5", - "mpdf/mpdf": "^8.1.1", + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", "phpcompatibility/php-compatibility": "^9.3", - "phpstan/phpstan": "^1.1 || ^2.0", - "phpstan/phpstan-deprecation-rules": "^1.0 || ^2.0", - "phpstan/phpstan-phpunit": "^1.0 || ^2.0", - "phpunit/phpunit": "^10.5", - "squizlabs/php_codesniffer": "^3.7", - "tecnickcom/tcpdf": "^6.5" - }, - "suggest": { - "dompdf/dompdf": "Option for rendering PDF with PDF Writer", - "ext-intl": "PHP Internationalization Functions, required for NumberFormat Wizard and StringHelper::setLocale()", - "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", - "mpdf/mpdf": "Option for rendering PDF with PDF Writer", - "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.7" }, "type": "library", "autoload": { "psr-4": { - "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + "Complex\\": "classes/src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3321,192 +4247,109 @@ "MIT" ], "authors": [ - { - "name": "Maarten Balliauw", - "homepage": "https://blog.maartenballiauw.be" - }, { "name": "Mark Baker", - "homepage": "https://markbakeruk.net" - }, - { - "name": "Franck Lefevre", - "homepage": "https://rootslabs.net" - }, - { - "name": "Erik Tilt" - }, - { - "name": "Adrien Crivelli" - }, - { - "name": "Owen Leibman" + "email": "mark@lange.demon.co.uk" } ], - "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", - "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", "keywords": [ - "OpenXML", - "excel", - "gnumeric", - "ods", - "php", - "spreadsheet", - "xls", - "xlsx" + "complex", + "mathematics" ], "support": { - "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.8.0" + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2" }, - "time": "2026-06-07T03:51:10+00:00" + "time": "2022-12-06T16:21:08+00:00" }, { - "name": "phpstan/phpdoc-parser", - "version": "2.3.3", + "name": "markbaker/matrix", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "fb19eedd2bb67ff8cf7a5502ad329e701d6398a3" + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fb19eedd2bb67ff8cf7a5502ad329e701d6398a3", - "reference": "fb19eedd2bb67ff8cf7a5502ad329e701d6398a3", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^5.3.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^9.6", - "symfony/process": "^5.2" + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.7" }, "type": "library", "autoload": { "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] + "Matrix\\": "classes/src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.3" - }, - "time": "2026-07-08T07:01:06+00:00" - }, - { - "name": "pixelandtonic/graphql-php", - "version": "v14.11.10.1", - "source": { - "type": "git", - "url": "https://github.com/pixelandtonic/graphql-php.git", - "reference": "fdb4a288878fc9ee449245e17209d676fc7c57fd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pixelandtonic/graphql-php/zipball/fdb4a288878fc9ee449245e17209d676fc7c57fd", - "reference": "fdb4a288878fc9ee449245e17209d676fc7c57fd", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": "^7.1 || ^8" - }, - "require-dev": { - "amphp/amp": "^2.3", - "doctrine/coding-standard": "^6.0", - "nyholm/psr7": "^1.2", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "0.12.82", - "phpstan/phpstan-phpunit": "0.12.18", - "phpstan/phpstan-strict-rules": "0.12.9", - "phpunit/phpunit": "^7.2 || ^8.5", - "psr/http-message": "^1.0", - "react/promise": "2.*", - "simpod/php-coveralls-mirror": "^3.0" - }, - "suggest": { - "psr/http-message": "To use standard GraphQL server", - "react/promise": "To leverage async resolving on React PHP platform" - }, - "type": "library", - "autoload": { - "psr-4": { - "GraphQL\\": "src/" + "authors": [ + { + "name": "Mark Baker", + "email": "mark@demon-angel.eu" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" ], - "description": "A PHP port of GraphQL reference implementation", - "homepage": "https://github.com/webonyx/graphql-php", + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", "keywords": [ - "api", - "graphql" + "mathematics", + "matrix", + "vector" ], "support": { - "source": "https://github.com/pixelandtonic/graphql-php/tree/v14.11.10.1" + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1" }, - "funding": [ - { - "url": "https://opencollective.com/webonyx-graphql-php", - "type": "open_collective" - } - ], - "time": "2026-04-14T15:27:52+00:00" + "time": "2022-12-02T22:17:43+00:00" }, { - "name": "pixelandtonic/imagine", - "version": "1.5.2.1", + "name": "masterminds/html5", + "version": "2.11.0", "source": { "type": "git", - "url": "https://github.com/pixelandtonic/Imagine.git", - "reference": "8e6c5cf929400142724b31482da51dc556277e15" + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pixelandtonic/Imagine/zipball/8e6c5cf929400142724b31482da51dc556277e15", - "reference": "8e6c5cf929400142724b31482da51dc556277e15", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7", + "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-dom": "*", + "php": ">=7.4" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5 || ^8.4 || ^9.3" - }, - "suggest": { - "ext-exif": "to read EXIF metadata", - "ext-gd": "to use the GD implementation", - "ext-gmagick": "to use the Gmagick implementation", - "ext-imagick": "to use the Imagick implementation" + "phpunit/phpunit": "^6 || ^7 || ^8 || ^9 || ^10" }, "type": "library", "extra": { "branch-alias": { - "dev-develop": "1.x-dev" + "dev-master": "2.7-dev" } }, "autoload": { "psr-4": { - "Imagine\\": "src/" + "Masterminds\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3515,112 +4358,176 @@ ], "authors": [ { - "name": "Bulat Shakirzyanov", - "email": "mallluhuct@gmail.com", - "homepage": "http://avalanche123.com" + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" } ], - "description": "Image processing for PHP", - "homepage": "http://imagine.readthedocs.org/", + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", "keywords": [ - "drawing", - "graphics", - "image manipulation", - "image processing" + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" ], "support": { - "source": "https://github.com/pixelandtonic/Imagine/tree/1.5.2.1" + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.11.0" }, - "time": "2026-02-25T23:13:43+00:00" + "time": "2026-08-18T06:18:41+00:00" }, { - "name": "pragmarx/google2fa", - "version": "v8.0.3", + "name": "mcp/sdk", + "version": "v0.8.1", "source": { "type": "git", - "url": "https://github.com/antonioribeiro/google2fa.git", - "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad" + "url": "https://github.com/modelcontextprotocol/php-sdk.git", + "reference": "c5dbfb64e5a2a30872ec3927b4cf13a2eb05e10e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", - "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", + "url": "https://api.github.com/repos/modelcontextprotocol/php-sdk/zipball/c5dbfb64e5a2a30872ec3927b4cf13a2eb05e10e", + "reference": "c5dbfb64e5a2a30872ec3927b4cf13a2eb05e10e", "shasum": "" }, "require": { - "paragonie/constant_time_encoding": "^1.0|^2.0|^3.0", - "php": "^7.1|^8.0" + "ext-fileinfo": "*", + "opis/json-schema": "^2.4", + "php": "^8.1", + "php-http/discovery": "^1.20", + "phpdocumentor/reflection-docblock": "^5.6 || ^6.0", + "psr/clock": "^1.0", + "psr/container": "^1.0 || ^2.0", + "psr/event-dispatcher": "^1.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.1", + "psr/http-message": "^1.1 || ^2.0", + "psr/http-server-handler": "^1.0", + "psr/http-server-middleware": "^1.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/uid": "^5.4 || ^6.4 || ^7.3 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^7.5.15|^8.5|^9.0" + "composer/semver": "^3.0", + "ext-openssl": "*", + "firebase/php-jwt": "^6.10 || ^7.0", + "laminas/laminas-httphandlerrunner": "^2.12", + "nyholm/psr7": "^1.8", + "nyholm/psr7-server": "^1.1", + "phar-io/composer-distributor": "^1.0.2", + "php-cs-fixer/shim": "^3.91", + "phpdocumentor/shim": "^3", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^10.5", + "psr/simple-cache": "^2.0 || ^3.0", + "symfony/cache": "^5.4 || ^6.4 || ^7.3 || ^8.0", + "symfony/console": "^5.4 || ^6.4 || ^7.3 || ^8.0", + "symfony/finder": "^5.4 || ^6.4 || ^7.3 || ^8.0", + "symfony/http-client": "^5.4 || ^6.4 || ^7.3 || ^8.0", + "symfony/process": "^5.4 || ^6.4 || ^7.3 || ^8.0" + }, + "suggest": { + "symfony/finder": "Required for file-based discovery." }, "type": "library", "autoload": { "psr-4": { - "PragmaRX\\Google2FA\\": "src/" + "Mcp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "Antonio Carlos Ribeiro", - "email": "acr@antoniocarlosribeiro.com", - "role": "Creator & Designer" + "name": "Christopher Hertel", + "email": "mail@christopher-hertel.de" + }, + { + "name": "Kyrian Obikwelu", + "email": "koshnawaza@gmail.com" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" } ], - "description": "A One Time Password Authentication package, compatible with Google Authenticator.", - "keywords": [ - "2fa", - "Authentication", - "Two Factor Authentication", - "google2fa" - ], + "description": "Model Context Protocol SDK for Client and Server applications in PHP", "support": { - "issues": "https://github.com/antonioribeiro/google2fa/issues", - "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.3" + "issues": "https://github.com/modelcontextprotocol/php-sdk/issues", + "source": "https://github.com/modelcontextprotocol/php-sdk/tree/v0.8.1" }, - "time": "2024-09-05T11:56:40+00:00" + "time": "2026-08-29T23:10:56+00:00" }, { - "name": "pragmarx/random", - "version": "v0.2.2", + "name": "moneyphp/money", + "version": "v4.9.0", "source": { "type": "git", - "url": "https://github.com/antonioribeiro/random.git", - "reference": "daf08a189c5d2d40d1a827db46364d3a741a51b7" + "url": "https://github.com/moneyphp/money.git", + "reference": "d49ee625c6ba79b9d7a228ce153b02fc1032152b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/random/zipball/daf08a189c5d2d40d1a827db46364d3a741a51b7", - "reference": "daf08a189c5d2d40d1a827db46364d3a741a51b7", + "url": "https://api.github.com/repos/moneyphp/money/zipball/d49ee625c6ba79b9d7a228ce153b02fc1032152b", + "reference": "d49ee625c6ba79b9d7a228ce153b02fc1032152b", "shasum": "" }, "require": { - "php": ">=7.0" + "ext-bcmath": "*", + "ext-filter": "*", + "ext-json": "*", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { - "fzaninotto/faker": "~1.7", - "phpunit/phpunit": "~6.4", - "pragmarx/trivia": "~0.1", - "squizlabs/php_codesniffer": "^2.3" + "cache/taggable-cache": "^1.1.0", + "doctrine/coding-standard": "^12.0", + "doctrine/instantiator": "^1.5.0 || ^2.0", + "ext-gmp": "*", + "ext-intl": "*", + "florianv/exchanger": "^2.8.1", + "florianv/swap": "^4.3.0", + "moneyphp/crypto-currencies": "^1.1.0", + "moneyphp/iso-currencies": "^3.4", + "php-http/message": "^1.16.0", + "php-http/mock-client": "^1.6.0", + "phpbench/phpbench": "^1.2.5", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1.9", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.9", + "psr/cache": "^1.0.1 || ^2.0 || ^3.0", + "ticketswap/phpstan-error-formatter": "^1.1" }, "suggest": { - "fzaninotto/faker": "Allows you to get dozens of randomized types", - "pragmarx/trivia": "For the trivia database" + "ext-gmp": "Calculate without integer limits", + "ext-intl": "Format Money objects with intl", + "florianv/exchanger": "Exchange rates library for PHP", + "florianv/swap": "Exchange rates library for PHP", + "psr/cache-implementation": "Used for Currency caching" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "PragmaRX\\Random\\": "src" + "Money\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3629,64 +4536,101 @@ ], "authors": [ { - "name": "Antonio Carlos Ribeiro", - "email": "acr@antoniocarlosribeiro.com", - "homepage": "https://antoniocarlosribeiro.com", - "role": "Developer" + "name": "Mathias Verraes", + "email": "mathias@verraes.net", + "homepage": "http://verraes.net" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "Frederik Bosch", + "email": "f.bosch@genkgo.nl" } ], - "description": "Create random chars, numbers, strings", - "homepage": "https://github.com/antonioribeiro/random", + "description": "PHP implementation of Fowler's Money pattern", + "homepage": "http://moneyphp.org", "keywords": [ - "Randomize", - "faker", - "pragmarx", - "random", - "random number", - "random pattern", - "random string" + "Value Object", + "money", + "vo" ], "support": { - "issues": "https://github.com/antonioribeiro/random/issues", - "source": "https://github.com/antonioribeiro/random/tree/master" + "issues": "https://github.com/moneyphp/money/issues", + "source": "https://github.com/moneyphp/money/tree/v4.9.0" }, - "time": "2017-11-21T05:26:22+00:00" + "time": "2026-05-04T20:23:15+00:00" }, { - "name": "pragmarx/recovery", - "version": "v0.2.1", + "name": "monolog/monolog", + "version": "3.12.1", "source": { "type": "git", - "url": "https://github.com/antonioribeiro/recovery.git", - "reference": "b5ce4082f059afac6761714a84497816f45271cc" + "url": "https://github.com/Seldaek/monolog.git", + "reference": "d7059e4c691d05ea1222b5124bed0f961be46e15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/recovery/zipball/b5ce4082f059afac6761714a84497816f45271cc", - "reference": "b5ce4082f059afac6761714a84497816f45271cc", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/d7059e4c691d05ea1222b5124bed0f961be46e15", + "reference": "d7059e4c691d05ea1222b5124bed0f961be46e15", "shasum": "" }, "require": { - "php": ">=7.0", - "pragmarx/random": "~0.1" + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" }, "require-dev": { - "phpunit/phpunit": ">=5.4.3", - "squizlabs/php_codesniffer": "^2.3", - "tightenco/collect": "^5.0" + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8 || ^2.0", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "psr/clock": "^1.0", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { - "tightenco/collect": "Allows to generate recovery codes as collections" + "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", + "psr/clock": "Required to pass a clock to the Logger and control the timestamp of log records", + "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-master": "1.0-dev" + "dev-main": "3.x-dev" } }, "autoload": { "psr-4": { - "PragmaRX\\Recovery\\": "src" + "Monolog\\": "src/Monolog" } }, "notification-url": "https://packagist.org/downloads/", @@ -3695,52 +4639,94 @@ ], "authors": [ { - "name": "Antonio Carlos Ribeiro", - "email": "acr@antoniocarlosribeiro.com", - "homepage": "https://antoniocarlosribeiro.com", - "role": "Developer" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" } ], - "description": "Create recovery codes for two factor auth", - "homepage": "https://github.com/antonioribeiro/recovery", + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ - "2fa", - "account recovery", - "auth", - "backup codes", - "google2fa", - "pragmarx", - "recovery", - "recovery codes", - "two factor auth" + "log", + "logging", + "psr-3" ], "support": { - "issues": "https://github.com/antonioribeiro/recovery/issues", - "source": "https://github.com/antonioribeiro/recovery/tree/v0.2.1" + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.12.1" }, - "time": "2021-08-15T12:26:51+00:00" + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2026-09-29T19:21:12+00:00" }, { - "name": "psr/clock", - "version": "1.0.0", + "name": "nesbot/carbon", + "version": "3.14.2", "source": { "type": "git", - "url": "https://github.com/php-fig/clock.git", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "94cfc34887f07ab5c0efa07914c8f527544e3224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/94cfc34887f07ab5c0efa07914c8f527544e3224", + "reference": "94cfc34887f07ab5c0efa07914c8f527544e3224", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0" + "carbonphp/carbon-doctrine-types": "<100.0", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3.12 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^v3.87.1", + "kylekatarnls/multi-tester": "^2.5.3", + "phpmd/phpmd": "^3.0@dev", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.22", + "phpunit/phpunit": "^10.5.53", + "squizlabs/php_codesniffer": "^3.13.4 || ^4.0.0" }, + "bin": [ + "bin/carbon" + ], "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Psr\\Clock\\": "src/" + "Carbon\\": "src/Carbon/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3749,155 +4735,247 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" } ], - "description": "Common interface for reading the clock.", - "homepage": "https://github.com/php-fig/clock", + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbonphp.github.io/carbon/", "keywords": [ - "clock", - "now", - "psr", - "psr-20", + "date", + "datetime", "time" ], "support": { - "issues": "https://github.com/php-fig/clock/issues", - "source": "https://github.com/php-fig/clock/tree/1.0.0" + "docs": "https://carbonphp.github.io/carbon/guide/getting-started/introduction.html", + "issues": "https://github.com/CarbonPHP/carbon/issues", + "source": "https://github.com/CarbonPHP/carbon" }, - "time": "2022-11-25T14:36:26+00:00" + "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": "2026-10-02T07:26:52+00:00" }, { - "name": "psr/container", - "version": "2.0.2", + "name": "nette/schema", + "version": "v1.3.6", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + "url": "https://github.com/nette/schema.git", + "reference": "c54350438cd6914616f790a49cb424605f421562" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "url": "https://api.github.com/repos/nette/schema/zipball/c54350438cd6914616f790a49cb424605f421562", + "reference": "c54350438cd6914616f790a49cb424605f421562", "shasum": "" }, "require": { - "php": ">=7.4.0" + "nette/utils": "^4.0", + "php": "8.1 - 8.5" + }, + "require-dev": { + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1.39@stable", + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.3-dev" } }, "autoload": { "psr-4": { - "Psr\\Container\\": "src/" - } + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "config", + "nette" ], "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.6" }, - "time": "2021-11-05T16:47:00+00:00" + "time": "2026-08-16T21:58:41+00:00" }, { - "name": "psr/event-dispatcher", - "version": "1.0.0", + "name": "nette/utils", + "version": "v4.1.5", "source": { "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + "url": "https://github.com/nette/utils.git", + "reference": "b043439dbdf954e6c28b5ea7e34b0100f83165e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "url": "https://api.github.com/repos/nette/utils/zipball/b043439dbdf954e6c28b5ea7e34b0100f83165e0", + "reference": "b043439dbdf954e6c28b5ea7e34b0100f83165e0", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": "8.2 - 8.5" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.5", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::chr(), ord() 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()" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "4.1-dev" } }, "autoload": { "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "Standard interfaces for event handling.", + "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": [ - "events", - "psr", - "psr-14" + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" ], "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.1.5" }, - "time": "2019-01-08T18:20:26+00:00" + "time": "2026-07-17T23:02:45+00:00" }, { - "name": "psr/http-client", - "version": "1.0.3", + "name": "nunomaduro/termwind", + "version": "v2.4.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "712a31b768f5daea284c2169a7d227031001b9a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/712a31b768f5daea284c2169a7d227031001b9a8", + "reference": "712a31b768f5daea284c2169a7d227031001b9a8", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.4.4 || ^8.0.4" + }, + "require-dev": { + "illuminate/console": "^11.47.0", + "laravel/pint": "^1.27.1", + "mockery/mockery": "^1.6.12", + "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.3.2", + "phpstan/phpstan": "^1.12.32", + "phpstan/phpstan-strict-rules": "^1.6.2", + "symfony/var-dumper": "^7.3.5 || ^8.0.4", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + }, "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { + "files": [ + "src/Functions.php" + ], "psr-4": { - "Psr\\Http\\Client\\": "src/" + "Termwind\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3906,207 +4984,256 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", + "description": "It's like Tailwind CSS, but for the console.", "keywords": [ - "http", - "http-client", - "psr", - "psr-18" + "cli", + "console", + "css", + "package", + "php", + "style" ], "support": { - "source": "https://github.com/php-fig/http-client" + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v2.4.0" }, - "time": "2023-09-23T14:17:50+00:00" + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2026-02-16T23:10:27+00:00" }, { - "name": "psr/http-factory", - "version": "1.1.0", + "name": "opis/json-schema", + "version": "2.6.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + "url": "https://github.com/opis/json-schema.git", + "reference": "8458763e0dd0b6baa310e04f1829fc73da4e8c8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "url": "https://api.github.com/repos/opis/json-schema/zipball/8458763e0dd0b6baa310e04f1829fc73da4e8c8a", + "reference": "8458763e0dd0b6baa310e04f1829fc73da4e8c8a", "shasum": "" }, "require": { - "php": ">=7.1", - "psr/http-message": "^1.0 || ^2.0" + "ext-json": "*", + "opis/string": "^2.1", + "opis/uri": "^1.0", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "ext-bcmath": "*", + "ext-intl": "*", + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Opis\\JsonSchema\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + }, + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" } ], - "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "description": "Json Schema Validator for PHP", + "homepage": "https://opis.io/json-schema", "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" + "json", + "json-schema", + "schema", + "validation", + "validator" ], "support": { - "source": "https://github.com/php-fig/http-factory" + "issues": "https://github.com/opis/json-schema/issues", + "source": "https://github.com/opis/json-schema/tree/2.6.0" }, - "time": "2024-04-15T12:06:14+00:00" + "time": "2025-10-17T12:46:48+00:00" }, { - "name": "psr/http-message", - "version": "2.0", + "name": "opis/string", + "version": "2.1.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + "url": "https://github.com/opis/string.git", + "reference": "3e4d2aaff518ac518530b89bb26ed40f4503635e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "url": "https://api.github.com/repos/opis/string/zipball/3e4d2aaff518ac518530b89bb26ed40f4503635e", + "reference": "3e4d2aaff518ac518530b89bb26ed40f4503635e", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "ext-iconv": "*", + "ext-json": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Opis\\String\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "Multibyte strings as objects", + "homepage": "https://opis.io/string", "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" + "multi-byte", + "opis", + "string", + "string manipulation", + "utf-8" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" + "issues": "https://github.com/opis/string/issues", + "source": "https://github.com/opis/string/tree/2.1.0" }, - "time": "2023-04-04T09:54:51+00:00" + "time": "2025-10-17T12:38:41+00:00" }, { - "name": "psr/log", - "version": "3.0.2", + "name": "opis/uri", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + "url": "https://github.com/opis/uri.git", + "reference": "0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "url": "https://api.github.com/repos/opis/uri/zipball/0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a", + "reference": "0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a", "shasum": "" }, "require": { - "php": ">=8.0.0" + "opis/string": "^2.0", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "src" + "Opis\\Uri\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "Build, parse and validate URIs and URI-templates", + "homepage": "https://opis.io", "keywords": [ - "log", - "psr", - "psr-3" + "URI Template", + "parse url", + "punycode", + "uri", + "uri components", + "url", + "validate uri" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.2" + "issues": "https://github.com/opis/uri/issues", + "source": "https://github.com/opis/uri/tree/1.1.0" }, - "time": "2024-09-11T13:17:53+00:00" + "time": "2021-05-22T15:57:08+00:00" }, { - "name": "psr/simple-cache", - "version": "3.0.0", + "name": "paragonie/constant_time_encoding", + "version": "v3.1.3", "source": { "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": "^8" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } + "require-dev": { + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" }, + "type": "library", "autoload": { "psr-4": { - "Psr\\SimpleCache\\": "src/" + "ParagonIE\\ConstantTime\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4115,116 +5242,140 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" } ], - "description": "Common interfaces for simple caching", + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2021-10-29T13:26:27+00:00" + "time": "2025-09-24T15:06:41+00:00" }, { - "name": "ralouphie/getallheaders", - "version": "3.0.3", + "name": "paragonie/random_compat", + "version": "v9.99.100", "source": { "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">= 7" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, + "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" } ], - "description": "A polyfill for getallheaders.", + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" }, - "time": "2019-03-08T08:55:37+00:00" + "time": "2020-10-15T08:29:30+00:00" }, { - "name": "sabberworm/php-css-parser", - "version": "v9.4.0", + "name": "php-http/discovery", + "version": "1.20.0", "source": { "type": "git", - "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", - "reference": "fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f" + "url": "https://github.com/php-http/discovery.git", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f", - "reference": "fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f", + "url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d", "shasum": "" }, "require": { - "ext-iconv": "*", - "php": "^7.2.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", - "thecodingmachine/safe": "^1.3 || ^2.5 || ^3.4" + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "1.4.0", - "phpstan/extension-installer": "1.4.3", - "phpstan/phpstan": "1.12.33 || 2.2.2", - "phpstan/phpstan-phpunit": "1.4.2 || 2.0.16", - "phpstan/phpstan-strict-rules": "1.6.2 || 2.0.11", - "phpunit/phpunit": "8.5.52", - "rawr/phpunit-data-provider": "3.3.1", - "rector/rector": "1.2.10 || 2.4.6", - "rector/type-perfect": "1.0.0 || 2.1.3", - "squizlabs/php_codesniffer": "4.0.1", - "thecodingmachine/phpstan-safe-rule": "1.2.0 || 1.4.3" + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" }, - "suggest": { - "ext-mbstring": "for parsing UTF-8 CSS" + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" }, - "type": "library", + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "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 || ^7.3", + "sebastian/comparator": "^3.0.5 || ^4.0.8", + "symfony/phpunit-bridge": "^6.4.4 || ^7.0.1" + }, + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-main": "9.5.x-dev" - } + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true }, "autoload": { - "files": [ - "src/Rule/Rule.php", - "src/RuleSet/RuleContainer.php" - ], "psr-4": { - "Sabberworm\\CSS\\": "src/" - } + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4232,121 +5383,128 @@ ], "authors": [ { - "name": "Raphael Schweikert" - }, - { - "name": "Oliver Klee", - "email": "github@oliverklee.de" - }, - { - "name": "Jake Hotson", - "email": "jake.github@qzdesign.co.uk" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "Parser for CSS Files written in PHP", - "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", + "homepage": "http://php-http.org", "keywords": [ - "css", - "parser", - "stylesheet" + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr17", + "psr7" ], "support": { - "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", - "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v9.4.0" + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.20.0" }, - "time": "2026-06-18T15:10:53+00:00" + "time": "2024-10-02T11:20:13+00:00" }, { - "name": "samdark/yii2-psr-log-target", - "version": "1.1.4", + "name": "phpdocumentor/reflection-common", + "version": "2.2.1", "source": { "type": "git", - "url": "https://github.com/samdark/yii2-psr-log-target.git", - "reference": "5f14f21d5ee4294fe9eb3e723ec8a3908ca082ea" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "ee15a5a2022c8383906b225055e9496a6a5e6e3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/samdark/yii2-psr-log-target/zipball/5f14f21d5ee4294fe9eb3e723ec8a3908ca082ea", - "reference": "5f14f21d5ee4294fe9eb3e723ec8a3908ca082ea", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/ee15a5a2022c8383906b225055e9496a6a5e6e3b", + "reference": "ee15a5a2022c8383906b225055e9496a6a5e6e3b", "shasum": "" }, "require": { - "psr/log": "~1.0.2|~1.1.0|~3.0.0", - "yiisoft/yii2": "~2.0.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "~4.4|~10.4.2" + "phpstan/phpstan": "^1.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } }, - "type": "yii2-extension", "autoload": { "psr-4": { - "samdark\\log\\": "src", - "samdark\\log\\tests\\": "tests" + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Alexander Makarov", - "email": "sam@rmcreative.ru" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Yii 2 log target which uses PSR-3 compatible logger", - "homepage": "https://github.com/samdark/yii2-psr-log-target", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "https://www.phpdoc.org", "keywords": [ - "extension", - "log", - "psr-3", - "yii" - ], + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], "support": { - "issues": "https://github.com/samdark/yii2-psr-log-target/issues", - "source": "https://github.com/samdark/yii2-psr-log-target" + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.2.1" }, - "funding": [ - { - "url": "https://github.com/samdark", - "type": "github" - }, - { - "url": "https://www.patreon.com/samdark", - "type": "patreon" - } - ], - "time": "2023-11-23T14:11:29+00:00" + "time": "2025-11-10T21:21:55+00:00" }, { - "name": "seld/cli-prompt", - "version": "1.0.4", + "name": "phpdocumentor/reflection-docblock", + "version": "6.0.3", "source": { "type": "git", - "url": "https://github.com/Seldaek/cli-prompt.git", - "reference": "b8dfcf02094b8c03b40322c229493bb2884423c5" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "7bae67520aa9f5ecc506d646810bd40d9da54582" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/b8dfcf02094b8c03b40322c229493bb2884423c5", - "reference": "b8dfcf02094b8c03b40322c229493bb2884423c5", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/7bae67520aa9f5ecc506d646810bd40d9da54582", + "reference": "7bae67520aa9f5ecc506d646810bd40d9da54582", "shasum": "" }, "require": { - "php": ">=5.3" + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^2.0", + "phpstan/phpdoc-parser": "^2.0", + "webmozart/assert": "^1.9.1 || ^2" }, "require-dev": { - "phpstan/phpstan": "^0.12.63" + "mockery/mockery": "~1.3.5 || ~1.6.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^5.26", + "shipmonk/dead-code-detector": "^0.5.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "Seld\\CliPrompt\\": "src/" + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4355,59 +5513,60 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", - "keywords": [ - "cli", - "console", - "hidden", - "input", - "prompt" - ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { - "issues": "https://github.com/Seldaek/cli-prompt/issues", - "source": "https://github.com/Seldaek/cli-prompt/tree/1.0.4" + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/6.0.3" }, - "time": "2020-12-15T21:32:01+00:00" + "time": "2026-03-18T20:49:53+00:00" }, { - "name": "setasign/fpdi", - "version": "v2.6.8", + "name": "phpdocumentor/type-resolver", + "version": "2.1.0", "source": { "type": "git", - "url": "https://github.com/Setasign/FPDI.git", - "reference": "881945be29a4996ad3d008eb18ddc01fa3df890c" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "dbe2133bb23e2e33a6834f4ed417f24a1b167769" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/881945be29a4996ad3d008eb18ddc01fa3df890c", - "reference": "881945be29a4996ad3d008eb18ddc01fa3df890c", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dbe2133bb23e2e33a6834f4ed417f24a1b167769", + "reference": "dbe2133bb23e2e33a6834f4ed417f24a1b167769", "shasum": "" }, "require": { - "ext-zlib": "*", - "php": ">=7.2 <=8.5.99999" - }, - "conflict": { - "setasign/tfpdf": "<1.31" + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^2.0" }, "require-dev": { - "phpunit/phpunit": "^8.5.52", - "setasign/fpdf": "^1.9.0", - "setasign/tfpdf": "~1.33", - "squizlabs/php_codesniffer": "^3.5", - "tecnickcom/tcpdf": "^6.8" - }, - "suggest": { - "setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured." + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev", + "dev-2.x": "2.x-dev" + } + }, "autoload": { "psr-4": { - "setasign\\Fpdi\\": "src/" + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4416,68 +5575,81 @@ ], "authors": [ { - "name": "Jan Slabon", - "email": "jan.slabon@setasign.com", - "homepage": "https://www.setasign.com" - }, - { - "name": "Maximilian Kresse", - "email": "maximilian.kresse@setasign.com", - "homepage": "https://www.setasign.com" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.", - "homepage": "https://www.setasign.com/fpdi", - "keywords": [ - "fpdf", - "fpdi", - "pdf" - ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { - "issues": "https://github.com/Setasign/FPDI/issues", - "source": "https://github.com/Setasign/FPDI/tree/v2.6.8" + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.1.0" }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/setasign/fpdi", - "type": "tidelift" - } - ], - "time": "2026-06-11T10:37:24+00:00" + "time": "2026-09-27T19:32:54+00:00" }, { - "name": "spomky-labs/cbor-php", - "version": "3.2.3", + "name": "phpoffice/phpspreadsheet", + "version": "5.10.0", "source": { "type": "git", - "url": "https://github.com/Spomky-Labs/cbor-php.git", - "reference": "dd6eb84e6d92f7b8bd0da56b4b4dd7235aed0c32" + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "eb18727acf6b1f4cc67145a52ab04f9fd4c28d53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/dd6eb84e6d92f7b8bd0da56b4b4dd7235aed0c32", - "reference": "dd6eb84e6d92f7b8bd0da56b4b4dd7235aed0c32", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/eb18727acf6b1f4cc67145a52ab04f9fd4c28d53", + "reference": "eb18727acf6b1f4cc67145a52ab04f9fd4c28d53", "shasum": "" }, "require": { - "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17", + "composer/pcre": "^1||^2||^3", + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-filter": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", "ext-mbstring": "*", - "php": ">=8.0" + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "maennchen/zipstream-php": "^2.1 || ^3.0", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": "^8.2", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" }, "require-dev": { - "ext-json": "*", - "roave/security-advisories": "dev-latest", - "symfony/error-handler": "^6.4|^7.1|^8.0", - "symfony/var-dumper": "^6.4|^7.1|^8.0" + "dealerdirect/phpcodesniffer-composer-installer": "dev-main", + "dompdf/dompdf": "^2.0 || ^3.0", + "ext-intl": "*", + "ext-openssl": "*", + "friendsofphp/php-cs-fixer": "^3.2", + "mitoteam/jpgraph": "^10.5", + "mpdf/mpdf": "^8.1.1", + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/phpstan": "^1.1 || ^2.0", + "phpstan/phpstan-deprecation-rules": "^1.0 || ^2.0", + "phpstan/phpstan-phpunit": "^1.0 || ^2.0", + "phpunit/phpunit": "^10.5 || ^11.0", + "squizlabs/php_codesniffer": "^3.7", + "tecnickcom/tcpdf": ">=6.8.0 <7.0.0" }, "suggest": { - "ext-bcmath": "GMP or BCMath extensions will drastically improve the library performance. BCMath extension needed to handle the Big Float and Decimal Fraction Tags", - "ext-gmp": "GMP or BCMath extensions will drastically improve the library performance" + "dompdf/dompdf": "Option for rendering PDF with PDF Writer", + "ext-intl": "PHP Internationalization Functions, required for NumberFormat Wizard and StringHelper::setLocale()", + "ext-openssl": "Handline Agile-encrypted Xlsx spreadsheets", + "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" }, "type": "library", "autoload": { "psr-4": { - "CBOR\\": "src/" + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" } }, "notification-url": "https://packagist.org/downloads/", @@ -4486,179 +5658,161 @@ ], "authors": [ { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky" + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" }, { - "name": "All contributors", - "homepage": "https://github.com/Spomky-Labs/cbor-php/contributors" + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + }, + { + "name": "Owen Leibman" } ], - "description": "CBOR Encoder/Decoder for PHP", + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", "keywords": [ - "Concise Binary Object Representation", - "RFC7049", - "cbor" + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" ], "support": { - "issues": "https://github.com/Spomky-Labs/cbor-php/issues", - "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.2.3" + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.10.0" }, - "funding": [ - { - "url": "https://github.com/Spomky", - "type": "github" - }, - { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" - } - ], - "time": "2026-04-01T12:15:20+00:00" + "time": "2026-09-17T03:54:50+00:00" }, { - "name": "spomky-labs/pki-framework", - "version": "1.4.2", + "name": "phpoption/phpoption", + "version": "1.10.0", "source": { "type": "git", - "url": "https://github.com/Spomky-Labs/pki-framework.git", - "reference": "aa576cbd07128075bef97ac2f8af9854e67513d8" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "67b192b6a42ec03944b972d6e633ddec78ad2c6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/aa576cbd07128075bef97ac2f8af9854e67513d8", - "reference": "aa576cbd07128075bef97ac2f8af9854e67513d8", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/67b192b6a42ec03944b972d6e633ddec78ad2c6d", + "reference": "67b192b6a42ec03944b972d6e633ddec78ad2c6d", "shasum": "" }, "require": { - "brick/math": "^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17", - "ext-mbstring": "*", - "php": ">=8.1", - "psr/clock": "^1.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "ekino/phpstan-banned-code": "^1.0|^2.0|^3.0", - "ext-gmp": "*", - "ext-openssl": "*", - "infection/infection": "^0.28|^0.29|^0.31|^0.32", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpstan/extension-installer": "^1.3|^2.0", - "phpstan/phpstan": "^1.8|^2.0", - "phpstan/phpstan-deprecation-rules": "^1.0|^2.0", - "phpstan/phpstan-phpunit": "^1.1|^2.0", - "phpstan/phpstan-strict-rules": "^1.3|^2.0", - "phpunit/phpunit": "^10.1|^11.0|^12.0|^13.0", - "rector/rector": "^1.0|^2.0", - "roave/security-advisories": "dev-latest", - "symfony/string": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0", - "symplify/easy-coding-standard": "^12.0|^13.0" - }, - "suggest": { - "ext-bcmath": "For better performance (or GMP)", - "ext-gmp": "For better performance (or BCMath)", - "ext-openssl": "For OpenSSL based cyphering" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.54 || ^9.6.36 || ^10.5.64 || ^11.5.56 || ^12.5.33" }, "type": "library", - "autoload": { - "psr-4": { - "SpomkyLabs\\Pki\\": "src/" + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "Joni Eskelinen", - "email": "jonieske@gmail.com", - "role": "Original developer" + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" }, { - "name": "Florent Morselli", - "email": "florent.morselli@spomky-labs.com", - "role": "Spomky-Labs PKI Framework developer" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], - "description": "A PHP framework for managing Public Key Infrastructures. It comprises X.509 public key certificates, attribute certificates, certification requests and certification path validation.", - "homepage": "https://github.com/spomky-labs/pki-framework", + "description": "Option Type for PHP", "keywords": [ - "DER", - "Private Key", - "ac", - "algorithm identifier", - "asn.1", - "asn1", - "attribute certificate", - "certificate", - "certification request", - "cryptography", - "csr", - "decrypt", - "ec", - "encrypt", - "pem", - "pkcs", - "public key", - "rsa", - "sign", - "signature", - "verify", - "x.509", - "x.690", - "x509", - "x690" + "language", + "option", + "php", + "type" ], "support": { - "issues": "https://github.com/Spomky-Labs/pki-framework/issues", - "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.4.2" + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.10.0" }, "funding": [ { - "url": "https://github.com/Spomky", + "url": "https://github.com/GrahamCampbell", "type": "github" }, { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" } ], - "time": "2026-03-23T22:56:56+00:00" + "time": "2026-08-24T00:54:40+00:00" }, { - "name": "symfony/clock", - "version": "v7.4.8", + "name": "phpseclib/phpseclib", + "version": "4.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/clock.git", - "reference": "674fa3b98e21531dd040e613479f5f6fa8f32111" + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "1fe20b9acb08ce810cec24d8a9d02e7c13426e4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/674fa3b98e21531dd040e613479f5f6fa8f32111", - "reference": "674fa3b98e21531dd040e613479f5f6fa8f32111", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/1fe20b9acb08ce810cec24d8a9d02e7c13426e4c", + "reference": "1fe20b9acb08ce810cec24d8a9d02e7c13426e4c", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/clock": "^1.0", - "symfony/polyfill-php83": "^1.28" + "paragonie/constant_time_encoding": "^2|^3", + "php": ">=8.1", + "symfony/polyfill-php82": "^1.26" }, - "provide": { - "psr/clock-implementation": "1.0" + "require-dev": { + "brianium/paratest": "^7.22", + "ext-xml": "*", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpunit/phpunit": "^13", + "squizlabs/php_codesniffer": "^3.7", + "vimeo/psalm": "*" + }, + "suggest": { + "ext-dom": "Install the DOM extension to load XML formatted public keys.", + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." }, "type": "library", "autoload": { "files": [ - "Resources/now.php" + "phpseclib/bootstrap.php" ], "psr-4": { - "Symfony\\Component\\Clock\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "phpseclib4\\": "phpseclib/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4666,144 +5820,155 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + }, + { + "name": "Jack Worman", + "email": "jack.worman@gmail.com", + "homepage": "https://jackworman.com", + "role": "Developer" } ], - "description": "Decouples applications from the system clock", - "homepage": "https://symfony.com", + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "https://phpseclib.com/", "keywords": [ - "clock", - "psr20", - "time" + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.4.8" + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/4.0.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/terrafrost", "type": "github" }, { - "url": "https://github.com/nicolas-grekas", - "type": "github" + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-10-07T19:55:38+00:00" }, { - "name": "symfony/css-selector", - "version": "v7.4.9", + "name": "phpstan/phpdoc-parser", + "version": "2.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "b75663ed96cf4756e28e3105476f220f92886cc4" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "1427af4647235b4a73b13940b1f1258d3584f36e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b75663ed96cf4756e28e3105476f220f92886cc4", - "reference": "b75663ed96cf4756e28e3105476f220f92886cc4", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1427af4647235b4a73b13940b1f1258d3584f36e", + "reference": "1427af4647235b4a73b13940b1f1258d3584f36e", "shasum": "" }, "require": { - "php": ">=8.2" + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "symfony/process": "^5.2" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } }, "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", + "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.4.9" + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.6" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-04-18T13:18:21+00:00" + "time": "2026-09-27T20:07:45+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.7.1", + "name": "pragmarx/google2fa", + "version": "v9.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d" + "url": "https://github.com/antonioribeiro/google2fa.git", + "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/f3202fa1b5097b0af062dc978b32ecf63404e31d", - "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/f00bc788c555adfb6765c437ff3538e59cd88af1", + "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1", "shasum": "" }, "require": { - "php": ">=8.1" + "paragonie/constant_time_encoding": "^1.0|^2.0|^3.0", + "php": "^7.1|^8.0" }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" - } + "require-dev": { + "phpstan/phpstan": "^1.0|^2.0", + "phpstan/phpstan-phpunit": "^1.0|^2.0", + "phpunit/phpunit": "~9|~10|~11|~12|~13", + "psalm/plugin-phpunit": "^0.19|^0.20", + "vimeo/psalm": "^5.26|^6.13" }, + "type": "library", "autoload": { - "files": [ - "function.php" - ] + "psr-4": { + "PragmaRX\\Google2FA\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4811,71 +5976,70 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" } ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", + "description": "A One Time Password Authentication package, compatible with Google Authenticator.", + "keywords": [ + "2fa", + "Authentication", + "MFA", + "Two Factor Authentication", + "google-authenticator", + "google2fa", + "hotp", + "otp", + "rfc4226", + "rfc6238", + "totp" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.1" + "docs": "https://github.com/antonioribeiro/google2fa#readme", + "issues": "https://github.com/antonioribeiro/google2fa/issues", + "security": "https://github.com/antonioribeiro/google2fa/security/policy", + "source": "https://github.com/antonioribeiro/google2fa" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-06-05T06:23:12+00:00" + "time": "2026-08-15T13:22:01+00:00" }, { - "name": "symfony/dom-crawler", - "version": "v7.4.12", + "name": "pragmarx/random", + "version": "v0.2.2", "source": { "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "b59b59122690976550fd142c23fab62c84738db6" + "url": "https://github.com/antonioribeiro/random.git", + "reference": "daf08a189c5d2d40d1a827db46364d3a741a51b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b59b59122690976550fd142c23fab62c84738db6", - "reference": "b59b59122690976550fd142c23fab62c84738db6", + "url": "https://api.github.com/repos/antonioribeiro/random/zipball/daf08a189c5d2d40d1a827db46364d3a741a51b7", + "reference": "daf08a189c5d2d40d1a827db46364d3a741a51b7", "shasum": "" }, "require": { - "masterminds/html5": "^2.6", - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=7.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0|^8.0" + "fzaninotto/faker": "~1.7", + "phpunit/phpunit": "~6.4", + "pragmarx/trivia": "~0.1", + "squizlabs/php_codesniffer": "^2.3" + }, + "suggest": { + "fzaninotto/faker": "Allows you to get dozens of randomized types", + "pragmarx/trivia": "For the trivia database" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "PragmaRX\\Random\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4883,84 +6047,65 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "homepage": "https://antoniocarlosribeiro.com", + "role": "Developer" } ], - "description": "Eases DOM navigation for HTML and XML documents", - "homepage": "https://symfony.com", + "description": "Create random chars, numbers, strings", + "homepage": "https://github.com/antonioribeiro/random", + "keywords": [ + "Randomize", + "faker", + "pragmarx", + "random", + "random number", + "random pattern", + "random string" + ], "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.4.12" + "issues": "https://github.com/antonioribeiro/random/issues", + "source": "https://github.com/antonioribeiro/random/tree/master" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-20T07:20:23+00:00" + "time": "2017-11-21T05:26:22+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v7.4.14", + "name": "pragmarx/recovery", + "version": "v0.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "51fe3d170227be8d1772214b82ae506e15ed78ff" + "url": "https://github.com/antonioribeiro/recovery.git", + "reference": "b5ce4082f059afac6761714a84497816f45271cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/51fe3d170227be8d1772214b82ae506e15ed78ff", - "reference": "51fe3d170227be8d1772214b82ae506e15ed78ff", + "url": "https://api.github.com/repos/antonioribeiro/recovery/zipball/b5ce4082f059afac6761714a84497816f45271cc", + "reference": "b5ce4082f059afac6761714a84497816f45271cc", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/event-dispatcher-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/service-contracts": "<2.5" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" + "php": ">=7.0", + "pragmarx/random": "~0.1" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/error-handler": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/framework-bundle": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0|^8.0" + "phpunit/phpunit": ">=5.4.3", + "squizlabs/php_codesniffer": "^2.3", + "tightenco/collect": "^5.0" + }, + "suggest": { + "tightenco/collect": "Allows to generate recovery codes as collections" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "PragmaRX\\Recovery\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4968,70 +6113,52 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "homepage": "https://antoniocarlosribeiro.com", + "role": "Developer" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", + "description": "Create recovery codes for two factor auth", + "homepage": "https://github.com/antonioribeiro/recovery", + "keywords": [ + "2fa", + "account recovery", + "auth", + "backup codes", + "google2fa", + "pragmarx", + "recovery", + "recovery codes", + "two factor auth" + ], "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.14" + "issues": "https://github.com/antonioribeiro/recovery/issues", + "source": "https://github.com/antonioribeiro/recovery/tree/v0.2.1" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-06-06T11:10:32+00:00" + "time": "2021-08-15T12:26:51+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.7.1", + "name": "psr/clock", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e" + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c7de7a00ffb67842132da02ea92988a39ccd9f4e", - "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" + "php": "^7.0 || ^8.0" }, "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" + "Psr\\Clock\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5040,77 +6167,52 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "clock", + "now", + "psr", + "psr-20", + "time" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.7.1" + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-06-05T06:23:12+00:00" + "time": "2022-11-25T14:36:26+00:00" }, { - "name": "symfony/filesystem", - "version": "v6.4.39", + "name": "psr/container", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "c507b077756b4e3e09adbbe7975fac81cd3722ca" + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/c507b077756b4e3e09adbbe7975fac81cd3722ca", - "reference": "c507b077756b4e3e09adbbe7975fac81cd3722ca", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "require-dev": { - "symfony/process": "^5.4|^6.4|^7.0" + "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Psr\\Container\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5118,97 +6220,52 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", + "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": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.39" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-07T13:11:42+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { - "name": "symfony/http-client", - "version": "v7.4.14", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "f6bc6b5a54ff5afac4725cacec9bf2f52eb15920" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/f6bc6b5a54ff5afac4725cacec9bf2f52eb15920", - "reference": "f6bc6b5a54ff5afac4725cacec9bf2f52eb15920", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-client-contracts": "~3.4.4|^3.5.2", - "symfony/polyfill-php83": "^1.29", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "amphp/amp": "<2.5", - "amphp/socket": "<1.1", - "php-http/discovery": "<1.15", - "symfony/http-foundation": "<6.4" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "3.0" - }, - "require-dev": { - "amphp/http-client": "^4.2.1|^5.0", - "amphp/http-tunnel": "^1.0|^2.0", - "guzzlehttp/promises": "^1.4|^2.0", - "nyholm/psr7": "^1.0", - "php-http/httplug": "^1.0|^2.0", - "psr/http-client": "^1.0", - "symfony/amphp-http-client-meta": "^1.0|^2.0", - "symfony/cache": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/messenger": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/rate-limiter": "^6.4|^7.0|^8.0", - "symfony/stopwatch": "^6.4|^7.0|^8.0" + "php": ">=7.2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Psr\\EventDispatcher\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5216,76 +6273,50 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", - "homepage": "https://symfony.com", + "description": "Standard interfaces for event handling.", "keywords": [ - "http" + "events", + "psr", + "psr-14" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.4.14" + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-06-16T11:50:14+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { - "name": "symfony/http-client-contracts", - "version": "v3.7.1", + "name": "psr/http-client", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "41fc42d276aeff21192465331ebbab7d83a743c0" + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41fc42d276aeff21192465331ebbab7d83a743c0", - "reference": "41fc42d276aeff21192465331ebbab7d83a743c0", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { - "php": ">=8.1" + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, "branch-alias": { - "dev-main": "3.7-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + "Psr\\Http\\Client\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5293,91 +6324,51 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "http", + "http-client", + "psr", + "psr-18" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.7.1" + "source": "https://github.com/php-fig/http-client" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-06-05T06:23:12+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { - "name": "symfony/mailer", - "version": "v7.4.14", + "name": "psr/http-factory", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "f88ce03ae73e3edb5c176ce1f337709996e88495" + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/f88ce03ae73e3edb5c176ce1f337709996e88495", - "reference": "f88ce03ae73e3edb5c176ce1f337709996e88495", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0|^8.0", - "symfony/mime": "^7.2|^8.0", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<6.4", - "symfony/messenger": "<6.4", - "symfony/mime": "<6.4", - "symfony/twig-bridge": "<6.4" - }, - "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/http-client": "^6.4|^7.0|^8.0", - "symfony/messenger": "^6.4|^7.0|^8.0", - "symfony/twig-bridge": "^6.4|^7.0|^8.0" + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Mailer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Psr\\Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5385,84 +6376,53 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Helps sending emails", - "homepage": "https://symfony.com", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.14" + "source": "https://github.com/php-fig/http-factory" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-06-13T08:51:35+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { - "name": "symfony/mime", - "version": "v7.4.13", + "name": "psr/http-message", + "version": "2.0", "source": { "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "a845722765c4f6b2ce88beaf4f4479975b186770" + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/a845722765c4f6b2ce88beaf4f4479975b186770", - "reference": "a845722765c4f6b2ce88beaf4f4479975b186770", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<5.2|>=7", - "phpdocumentor/type-resolver": "<1.5.1", - "symfony/mailer": "<6.4", - "symfony/serializer": "<6.4.3|>7.0,<7.0.3" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^5.2|^6.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/property-access": "^6.4|^7.0|^8.0", - "symfony/property-info": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4.3|^7.0.3|^8.0" + "php": "^7.2 || ^8.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Psr\\Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5470,79 +6430,52 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "mime", - "mime-type" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.13" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-23T16:22:37+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.37.0", + "name": "psr/http-server-handler", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "141046a8f9477948ff284fa65be2095baafb94f2" + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", - "reference": "141046a8f9477948ff284fa65be2095baafb94f2", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4", "shasum": "" }, "require": { - "php": ">=7.2" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" + "php": ">=7.0", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" + "branch-alias": { + "dev-master": "1.0.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Psr\\Http\\Server\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5551,78 +6484,55 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", + "description": "Common interface for HTTP server-side request handler", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" + "source": "https://github.com/php-fig/http-server-handler/tree/1.0.2" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-04-10T16:19:22+00:00" + "time": "2023-04-10T20:06:20+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.38.1", + "name": "psr/http-server-middleware", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "e9247d281d694a5120554d9afaf54e070e88a603" + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603", - "reference": "e9247d281d694a5120554d9afaf54e070e88a603", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829", "shasum": "" }, "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=7.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/http-server-handler": "^1.0" }, "type": "library", "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" + "branch-alias": { + "dev-master": "1.0.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + "Psr\\Http\\Server\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5631,81 +6541,53 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", + "description": "Common interface for HTTP server-side middleware", "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" + "http", + "http-interop", + "middleware", + "psr", + "psr-15", + "psr-7", + "request", + "response" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1" + "issues": "https://github.com/php-fig/http-server-middleware/issues", + "source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-26T05:58:03+00:00" + "time": "2023-04-11T06:14:47+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.38.1", + "name": "psr/log", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "dc21118016c039a66235cf93d96b435ffb282412" + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/dc21118016c039a66235cf93d96b435ffb282412", - "reference": "dc21118016c039a66235cf93d96b435ffb282412", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { - "php": ">=7.2", - "symfony/polyfill-intl-normalizer": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=8.0.0" }, "type": "library", "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" + "branch-alias": { + "dev-master": "3.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -5714,88 +6596,49 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" + "log", + "psr", + "psr-3" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.38.1" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-25T15:22:23+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.38.0", + "name": "psr/simple-cache", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", - "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", "shasum": "" }, "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=8.0.0" }, "type": "library", "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" + "branch-alias": { + "dev-master": "3.0.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Psr\\SimpleCache\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5803,85 +6646,49 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", + "description": "Common interfaces for simple caching", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-25T13:48:31+00:00" + "time": "2021-10-29T13:26:27+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.38.2", + "name": "ralouphie/getallheaders", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "ext-iconv": "*", - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" + "php": ">=5.6" }, - "suggest": { - "ext-mbstring": "For best performance" + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, "autoload": { "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } + "src/getallheaders.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5889,80 +6696,66 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], + "description": "A polyfill for getallheaders.", "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2" + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-27T06:59:30+00:00" + "time": "2019-03-08T08:55:37+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.37.0", + "name": "ramsey/collection", + "version": "2.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411" + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411", - "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", "shasum": "" }, "require": { - "php": ">=7.2" + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" }, "type": "library", "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Ramsey\\Collection\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5970,163 +6763,151 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "A PHP library for representing and manipulating collections.", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "array", + "collection", + "hash", + "map", + "queue", + "set" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0" + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.1.1" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-04-10T16:19:22+00:00" + "time": "2025-03-22T05:38:12+00:00" }, { - "name": "symfony/polyfill-php83", - "version": "v1.38.2", + "name": "ramsey/uuid", + "version": "4.9.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "796a26abb75ce49f3a84433cd81bf1009d73d5f8" + "url": "https://github.com/ramsey/uuid.git", + "reference": "75d73f48d02797c2c285a7e9f348fadc0102ffe2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/796a26abb75ce49f3a84433cd81bf1009d73d5f8", - "reference": "796a26abb75ce49f3a84433cd81bf1009d73d5f8", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/75d73f48d02797c2c285a7e9f348fadc0102ffe2", + "reference": "75d73f48d02797c2c285a7e9f348fadc0102ffe2", "shasum": "" }, "require": { - "php": ">=7.2" + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14 || ^0.15 || ^0.16 || ^0.17 || ^0.18 || ^0.19 || ^0.20 || ^1.0", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "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": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" + "captainhook": { + "force-install": true } }, "autoload": { "files": [ - "bootstrap.php" + "src/functions.php" ], "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Ramsey\\Uuid\\": "src/" + } }, "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.3+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "guid", + "identifier", + "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.38.2" + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.9.4" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-27T06:51:48+00:00" + "time": "2026-09-16T11:39:30+00:00" }, { - "name": "symfony/polyfill-php84", - "version": "v1.38.1", + "name": "sabberworm/php-css-parser", + "version": "v9.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa" + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", + "reference": "f284e63b6e891e0c28631e54ba06c3ed102a9ef3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", - "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/f284e63b6e891e0c28631e54ba06c3ed102a9ef3", + "reference": "f284e63b6e891e0c28631e54ba06c3ed102a9ef3", "shasum": "" }, "require": { - "php": ">=7.2" + "ext-iconv": "*", + "php": "^7.2.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0 || ~8.6.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/extension-installer": "1.4.3", + "phpstan/phpstan": "1.12.33 || 2.2.9", + "phpstan/phpstan-phpunit": "1.4.2 || 2.0.18", + "phpstan/phpstan-strict-rules": "1.6.2 || 2.0.12", + "phpunit/phpunit": "8.5.54", + "rawr/phpunit-data-provider": "3.3.1", + "rector/rector": "1.2.10 || 2.6.2", + "rector/type-perfect": "1.0.0 || 2.1.4", + "squizlabs/php_codesniffer": "4.0.4" + }, + "suggest": { + "ext-mbstring": "for parsing UTF-8 CSS" }, "type": "library", "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" + "branch-alias": { + "dev-main": "9.6.x-dev" } }, "autoload": { "files": [ - "bootstrap.php" + "src/Rule/Rule.php", + "src/RuleSet/RuleContainer.php" ], "psr-4": { - "Symfony\\Polyfill\\Php84\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Sabberworm\\CSS\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6134,81 +6915,65 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Raphael Schweikert" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" } ], - "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Parser for CSS Files written in PHP", + "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "css", + "parser", + "stylesheet" ], "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.38.1" + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v9.5.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-26T12:51:13+00:00" + "time": "2026-09-20T15:02:00+00:00" }, { - "name": "symfony/polyfill-uuid", - "version": "v1.37.0", + "name": "setasign/fpdi", + "version": "v2.6.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94" + "url": "https://github.com/Setasign/FPDI.git", + "reference": "881945be29a4996ad3d008eb18ddc01fa3df890c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/26dfec253c4cf3e51b541b52ddf7e42cb0908e94", - "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/881945be29a4996ad3d008eb18ddc01fa3df890c", + "reference": "881945be29a4996ad3d008eb18ddc01fa3df890c", "shasum": "" }, "require": { - "php": ">=7.2" + "ext-zlib": "*", + "php": ">=7.2 <=8.5.99999" }, - "provide": { - "ext-uuid": "*" + "conflict": { + "setasign/tfpdf": "<1.31" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.52", + "setasign/fpdf": "^1.9.0", + "setasign/tfpdf": "~1.33", + "squizlabs/php_codesniffer": "^3.5", + "tecnickcom/tcpdf": "^6.8" }, "suggest": { - "ext-uuid": "For best performance" + "setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured." }, "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" + "setasign\\Fpdi\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6217,70 +6982,70 @@ ], "authors": [ { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" + "name": "Jan Slabon", + "email": "jan.slabon@setasign.com", + "homepage": "https://www.setasign.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Maximilian Kresse", + "email": "maximilian.kresse@setasign.com", + "homepage": "https://www.setasign.com" } ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", + "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.", + "homepage": "https://www.setasign.com/fpdi", "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" + "fpdf", + "fpdi", + "pdf" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.37.0" + "issues": "https://github.com/Setasign/FPDI/issues", + "source": "https://github.com/Setasign/FPDI/tree/v2.6.8" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/setasign/fpdi", "type": "tidelift" } ], - "time": "2026-04-10T16:19:22+00:00" + "time": "2026-06-11T10:37:24+00:00" }, { - "name": "symfony/process", - "version": "v7.4.13", + "name": "spomky-labs/cbor-php", + "version": "3.4.2", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "f5804be144caceb570f6747519999636b664f24c" + "url": "https://github.com/Spomky-Labs/cbor-php.git", + "reference": "8f5ea00a07ad529d20886505cdbeb2b9ac7bb2d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f5804be144caceb570f6747519999636b664f24c", - "reference": "f5804be144caceb570f6747519999636b664f24c", + "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/8f5ea00a07ad529d20886505cdbeb2b9ac7bb2d6", + "reference": "8f5ea00a07ad529d20886505cdbeb2b9ac7bb2d6", "shasum": "" }, "require": { - "php": ">=8.2" + "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17|^0.18|^0.19|^0.20|^1.0", + "ext-mbstring": "*", + "php": ">=8.0", + "symfony/polyfill-php81": "^1.32" + }, + "require-dev": { + "ext-json": "*", + "roave/security-advisories": "dev-latest", + "symfony/error-handler": "^6.4|^7.1|^8.0", + "symfony/var-dumper": "^6.4|^7.1|^8.0" + }, + "suggest": { + "ext-bcmath": "Improves the library performance when ext-gmp is missing, and is required to handle the Big Float and Decimal Fraction Tags (4 and 5)", + "ext-gmp": "Strongly recommended when decoding untrusted input: without it, converting the byte string of a Big Number Tag (2 and 3) is quadratic in its length. Also improves the library performance overall" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "CBOR\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6288,69 +7053,84 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Florent Morselli", + "homepage": "https://github.com/Spomky" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "All contributors", + "homepage": "https://github.com/Spomky-Labs/cbor-php/contributors" } ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", + "description": "CBOR Encoder/Decoder for PHP", + "keywords": [ + "Concise Binary Object Representation", + "RFC7049", + "cbor" + ], "support": { - "source": "https://github.com/symfony/process/tree/v7.4.13" + "issues": "https://github.com/Spomky-Labs/cbor-php/issues", + "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.4.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", + "url": "https://github.com/Spomky", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" } ], - "time": "2026-05-23T16:05:06+00:00" + "time": "2026-09-15T06:55:29+00:00" }, { - "name": "symfony/property-access", - "version": "v7.4.8", + "name": "spomky-labs/pki-framework", + "version": "1.6.3", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc" + "url": "https://github.com/Spomky-Labs/pki-framework.git", + "reference": "792e909d4e387adffe3c4f404451c7d57a3d2022" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc", - "reference": "b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/792e909d4e387adffe3c4f404451c7d57a3d2022", + "reference": "792e909d4e387adffe3c4f404451c7d57a3d2022", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/property-info": "^6.4.32|~7.3.10|^7.4.4|^8.0.4" + "brick/math": "^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17|^0.18|^0.19|^0.20|^1.0", + "ext-mbstring": "*", + "php": ">=8.1" }, "require-dev": { - "symfony/cache": "^6.4|^7.0|^8.0", - "symfony/var-exporter": "^6.4.1|^7.0.1|^8.0" + "ekino/phpstan-banned-code": "^1.0|^2.0|^3.0", + "ext-gmp": "*", + "ext-openssl": "*", + "infection/infection": "^0.28|^0.29|^0.31", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/extension-installer": "^1.3|^2.0", + "phpstan/phpstan": "^1.8|^2.0", + "phpstan/phpstan-deprecation-rules": "^1.0|^2.0", + "phpstan/phpstan-phpunit": "^1.1|^2.0", + "phpstan/phpstan-strict-rules": "^1.3|^2.0", + "phpunit/phpunit": "^10.1|^11.0|^12.0", + "rector/rector": "^1.0|^2.0", + "roave/security-advisories": "dev-latest", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symplify/easy-coding-standard": "^12.0 || ^13.0" + }, + "suggest": { + "ext-bcmath": "For better performance (or GMP)", + "ext-gmp": "For better performance (or BCMath)", + "ext-openssl": "For OpenSSL based cyphering", + "ext-sodium": "To verify Ed25519 signatures where the OpenSSL extension has no EdDSA" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "SpomkyLabs\\Pki\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6358,88 +7138,89 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Joni Eskelinen", + "email": "jonieske@gmail.com", + "role": "Original developer" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Florent Morselli", + "email": "florent.morselli@spomky-labs.com", + "role": "Spomky-Labs PKI Framework developer" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", - "homepage": "https://symfony.com", + "description": "A PHP framework for managing Public Key Infrastructures. It comprises X.509 public key certificates, attribute certificates, certification requests and certification path validation.", + "homepage": "https://github.com/spomky-labs/pki-framework", "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property-path", - "reflection" + "DER", + "Private Key", + "ac", + "algorithm identifier", + "asn.1", + "asn1", + "attribute certificate", + "certificate", + "certification request", + "cryptography", + "csr", + "decrypt", + "ec", + "encrypt", + "pem", + "pkcs", + "public key", + "rsa", + "sign", + "signature", + "verify", + "x.509", + "x.690", + "x509", + "x690" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.4.8" + "issues": "https://github.com/Spomky-Labs/pki-framework/issues", + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.6.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", + "url": "https://github.com/Spomky", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-09-12T19:02:49+00:00" }, { - "name": "symfony/property-info", - "version": "v7.4.8", + "name": "symfony/clock", + "version": "v8.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/property-info.git", - "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175" + "url": "https://github.com/symfony/clock.git", + "reference": "701ef4de9705d6c32292ebee5e8044094a09fbf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/ac5e82528b986c4f7cfccbf7764b5d2e824d6175", - "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175", + "url": "https://api.github.com/repos/symfony/clock/zipball/701ef4de9705d6c32292ebee5e8044094a09fbf6", + "reference": "701ef4de9705d6c32292ebee5e8044094a09fbf6", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0|^8.0", - "symfony/type-info": "^7.4.7|^8.0.7" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "<5.2|>=7", - "phpdocumentor/type-resolver": "<1.5.1", - "symfony/cache": "<6.4", - "symfony/dependency-injection": "<6.4", - "symfony/serializer": "<6.4" + "php": ">=8.4.1", + "psr/clock": "^1.0" }, - "require-dev": { - "phpdocumentor/reflection-docblock": "^5.2|^6.0", - "phpstan/phpdoc-parser": "^1.0|^2.0", - "symfony/cache": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0" + "provide": { + "psr/clock-implementation": "1.0" }, "type": "library", "autoload": { + "files": [ + "Resources/now.php" + ], "psr-4": { - "Symfony\\Component\\PropertyInfo\\": "" + "Symfony\\Component\\Clock\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6451,26 +7232,23 @@ ], "authors": [ { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Extracts information about PHP class' properties using metadata of popular sources", + "description": "Decouples applications from the system clock", "homepage": "https://symfony.com", "keywords": [ - "doctrine", - "phpdoc", - "property", - "symfony", - "type", - "validator" + "clock", + "psr20", + "time" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.8" + "source": "https://github.com/symfony/clock/tree/v8.1.0" }, "funding": [ { @@ -6490,68 +7268,58 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-05-29T05:06:50+00:00" }, { - "name": "symfony/serializer", - "version": "v7.4.14", + "name": "symfony/console", + "version": "v8.1.8", "source": { "type": "git", - "url": "https://github.com/symfony/serializer.git", - "reference": "55acb01b9c8a5211dfbaf68c314d90d0ed2cc3d1" + "url": "https://github.com/symfony/console.git", + "reference": "4b81146e3ee248ea969186f85499b54fbc78db08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/55acb01b9c8a5211dfbaf68c314d90d0ed2cc3d1", - "reference": "55acb01b9c8a5211dfbaf68c314d90d0ed2cc3d1", + "url": "https://api.github.com/repos/symfony/console/zipball/4b81146e3ee248ea969186f85499b54fbc78db08", + "reference": "4b81146e3ee248ea969186f85499b54fbc78db08", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4.1", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php84": "^1.30" + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php85": "^1.32", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.4.6|^8.0.6" }, "conflict": { - "phpdocumentor/reflection-docblock": "<5.2|>=7", - "phpdocumentor/type-resolver": "<1.5.1", - "symfony/dependency-injection": "<6.4", - "symfony/property-access": "<6.4.31|>=7.0,<7.4.2|>=8.0,<8.0.2", - "symfony/property-info": "<6.4", - "symfony/type-info": "<7.2.5", - "symfony/uid": "<6.4", - "symfony/validator": "<6.4", - "symfony/yaml": "<6.4" + "symfony/dependency-injection": "<8.1", + "symfony/event-dispatcher": "<8.1" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "phpdocumentor/reflection-docblock": "^5.2|^6.0", - "phpstan/phpdoc-parser": "^1.0|^2.0", - "seld/jsonlint": "^1.10", - "symfony/cache": "^6.4|^7.0|^8.0", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^7.2|^8.0", - "symfony/error-handler": "^6.4|^7.0|^8.0", - "symfony/filesystem": "^6.4|^7.0|^8.0", - "symfony/form": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/messenger": "^6.4|^7.0|^8.0", - "symfony/mime": "^6.4|^7.0|^8.0", - "symfony/property-access": "^6.4.31|^7.4.2|^8.0.2", - "symfony/property-info": "^6.4|^7.0|^8.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/type-info": "^7.2.5|^8.0", - "symfony/uid": "^6.4|^7.0|^8.0", - "symfony/validator": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0", - "symfony/var-exporter": "^6.4|^7.0|^8.0", - "symfony/yaml": "^6.4|^7.0|^8.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^8.1", + "symfony/event-dispatcher": "^8.1", + "symfony/filesystem": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Serializer\\": "" + "Symfony\\Component\\Console\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6571,10 +7339,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "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/serializer/tree/v7.4.14" + "source": "https://github.com/symfony/console/tree/v8.1.8" }, "funding": [ { @@ -6594,46 +7368,32 @@ "type": "tidelift" } ], - "time": "2026-06-27T08:31:18+00:00" + "time": "2026-09-18T16:00:27+00:00" }, { - "name": "symfony/service-contracts", - "version": "v3.7.1", + "name": "symfony/css-selector", + "version": "v8.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "c0a284bab1ed8aa0417e3d69250ab437739563a0" + "url": "https://github.com/symfony/css-selector.git", + "reference": "08e2905152a39cf3fd1745d83f8c483e258887d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/c0a284bab1ed8aa0417e3d69250ab437739563a0", - "reference": "c0a284bab1ed8aa0417e3d69250ab437739563a0", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/08e2905152a39cf3fd1745d83f8c483e258887d9", + "reference": "08e2905152a39cf3fd1745d83f8c483e258887d9", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" + "php": ">=8.4.1" }, "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\Service\\": "" + "Symfony\\Component\\CssSelector\\": "" }, "exclude-from-classmap": [ - "/Test/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6642,26 +7402,22 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "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": "Generic abstractions related to writing services", + "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.7.1" + "source": "https://github.com/symfony/css-selector/tree/v8.1.6" }, "funding": [ { @@ -6681,50 +7437,38 @@ "type": "tidelift" } ], - "time": "2026-06-16T09:55:08+00:00" + "time": "2026-08-23T10:06:25+00:00" }, { - "name": "symfony/string", - "version": "v7.4.13", + "name": "symfony/deprecation-contracts", + "version": "v3.7.1", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", - "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/f3202fa1b5097b0af062dc978b32ecf63404e31d", + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.33", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "require-dev": { - "symfony/emoji": "^7.1|^8.0", - "symfony/http-client": "^6.4|^7.0|^8.0", - "symfony/intl": "^6.4|^7.0|^8.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0|^8.0" + "php": ">=8.1" }, "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, "autoload": { "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6741,18 +7485,10 @@ "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", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.13" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.1" }, "funding": [ { @@ -6772,63 +7508,34 @@ "type": "tidelift" } ], - "time": "2026-05-23T15:23:29+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { - "name": "symfony/translation", - "version": "v6.4.42", + "name": "symfony/dom-crawler", + "version": "v8.1.5", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "fef99cef37890b350976f5f492854faefadd4e15" + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "94f70e1b2e5b7b8f8618871fd9eaad3e39e9f03d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/fef99cef37890b350976f5f492854faefadd4e15", - "reference": "fef99cef37890b350976f5f492854faefadd4e15", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/94f70e1b2e5b7b8f8618871fd9eaad3e39e9f03d", + "reference": "94f70e1b2e5b7b8f8618871fd9eaad3e39e9f03d", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" + "php": ">=8.4.1", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { - "nikic/php-parser": "^4.18|^5.0", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/css-selector": "^7.4|^8.0" }, "type": "library", "autoload": { - "files": [ - "Resources/functions.php" - ], "psr-4": { - "Symfony\\Component\\Translation\\": "" + "Symfony\\Component\\DomCrawler\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6848,10 +7555,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to internationalize your application", + "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.42" + "source": "https://github.com/symfony/dom-crawler/tree/v8.1.5" }, "funding": [ { @@ -6871,41 +7578,48 @@ "type": "tidelift" } ], - "time": "2026-06-05T16:46:18+00:00" + "time": "2026-08-21T17:47:34+00:00" }, { - "name": "symfony/translation-contracts", - "version": "v3.7.1", + "name": "symfony/error-handler", + "version": "v8.1.8", "source": { "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "ccb206b98faccc511ebae8e5fad50f2dc0b30621" + "url": "https://github.com/symfony/error-handler.git", + "reference": "c146daceccd5d4f864c051b233c276641cec527b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/ccb206b98faccc511ebae8e5fad50f2dc0b30621", - "reference": "ccb206b98faccc511ebae8e5fad50f2dc0b30621", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c146daceccd5d4f864c051b233c276641cec527b", + "reference": "c146daceccd5d4f864c051b233c276641cec527b", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.4.1", + "psr/log": "^1|^2|^3", + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^7.4|^8.0" }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" - } + "conflict": { + "symfony/deprecation-contracts": "<2.5" }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/webpack-encore-bundle": "^1.0|^2.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", "autoload": { "psr-4": { - "Symfony\\Contracts\\Translation\\": "" + "Symfony\\Component\\ErrorHandler\\": "" }, "exclude-from-classmap": [ - "/Test/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6914,26 +7628,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to translation", + "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.7.1" + "source": "https://github.com/symfony/error-handler/tree/v8.1.8" }, "funding": [ { @@ -6953,37 +7659,50 @@ "type": "tidelift" } ], - "time": "2026-06-05T06:23:12+00:00" + "time": "2026-09-22T18:58:53+00:00" }, { - "name": "symfony/type-info", - "version": "v7.4.9", + "name": "symfony/event-dispatcher", + "version": "v8.1.5", "source": { "type": "git", - "url": "https://github.com/symfony/type-info.git", - "reference": "cafeedbf157b890e94ac5b83eaed85595106d5d6" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "7458da64220376b2e0dc2d8451bf43382c1ad297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/cafeedbf157b890e94ac5b83eaed85595106d5d6", - "reference": "cafeedbf157b890e94ac5b83eaed85595106d5d6", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7458da64220376b2e0dc2d8451bf43382c1ad297", + "reference": "7458da64220376b2e0dc2d8451bf43382c1ad297", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "phpstan/phpdoc-parser": "<1.30" + "symfony/security-http": "<7.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { - "phpstan/phpdoc-parser": "^1.30|^2.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/error-handler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^7.4|^8.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\TypeInfo\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6995,28 +7714,18 @@ ], "authors": [ { - "name": "Mathias Arlaud", - "email": "mathias.arlaud@gmail.com" - }, - { - "name": "Baptiste LEDUC", - "email": "baptiste.leduc@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Extracts PHP types information.", + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", - "keywords": [ - "PHPStan", - "phpdoc", - "symfony", - "type" - ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.4.9" + "source": "https://github.com/symfony/event-dispatcher/tree/v8.1.5" }, "funding": [ { @@ -7036,47 +7745,46 @@ "type": "tidelift" } ], - "time": "2026-04-22T15:21:55+00:00" + "time": "2026-08-21T17:47:34+00:00" }, { - "name": "symfony/uid", - "version": "v7.4.9", + "name": "symfony/event-dispatcher-contracts", + "version": "v3.7.1", "source": { "type": "git", - "url": "https://github.com/symfony/uid.git", - "reference": "2676b524340abcfe4d6151ec698463cebafee439" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/2676b524340abcfe4d6151ec698463cebafee439", - "reference": "2676b524340abcfe4d6151ec698463cebafee439", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c7de7a00ffb67842132da02ea92988a39ccd9f4e", + "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-uuid": "^1.15" - }, - "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Uid\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -7086,15 +7794,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an object-oriented API to generate and represent UIDs", + "description": "Generic abstractions related to dispatching event", "homepage": "https://symfony.com", "keywords": [ - "UID", - "ulid", - "uuid" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.4.9" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.7.1" }, "funding": [ { @@ -7114,47 +7825,35 @@ "type": "tidelift" } ], - "time": "2026-04-30T15:19:22+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { - "name": "symfony/var-dumper", - "version": "v7.4.14", + "name": "symfony/filesystem", + "version": "v8.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "9a3a56a4a1e65a5cb4f8d13801fe8ab0a170e358" + "url": "https://github.com/symfony/filesystem.git", + "reference": "7599ebb855fede59413ddb7f15198d67bfcae7ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9a3a56a4a1e65a5cb4f8d13801fe8ab0a170e358", - "reference": "9a3a56a4a1e65a5cb4f8d13801fe8ab0a170e358", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7599ebb855fede59413ddb7f15198d67bfcae7ba", + "reference": "7599ebb855fede59413ddb7f15198d67bfcae7ba", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4.1", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/console": "<6.4" + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/uid": "^6.4|^7.0|^8.0", - "twig/twig": "^3.12" + "symfony/process": "^7.4|^8.0" }, - "bin": [ - "Resources/bin/var-dump-server" - ], "type": "library", "autoload": { - "files": [ - "Resources/functions/dump.php" - ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" + "Symfony\\Component\\Filesystem\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7166,22 +7865,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.14" + "source": "https://github.com/symfony/filesystem/tree/v8.1.6" }, "funding": [ { @@ -7201,40 +7896,32 @@ "type": "tidelift" } ], - "time": "2026-06-08T20:24:16+00:00" + "time": "2026-08-23T10:06:25+00:00" }, { - "name": "symfony/yaml", - "version": "v7.4.14", + "name": "symfony/finder", + "version": "v8.1.8", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "f8f328665ace2370d1e10645b807ba1646dc7dcc" + "url": "https://github.com/symfony/finder.git", + "reference": "bd4fed193a3132c91c5c93595cbfc78988915822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/f8f328665ace2370d1e10645b807ba1646dc7dcc", - "reference": "f8f328665ace2370d1e10645b807ba1646dc7dcc", + "url": "https://api.github.com/repos/symfony/finder/zipball/bd4fed193a3132c91c5c93595cbfc78988915822", + "reference": "bd4fed193a3132c91c5c93595cbfc78988915822", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<6.4" + "php": ">=8.4.1" }, "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0" + "symfony/filesystem": "^7.4|^8.0" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" + "Symfony\\Component\\Finder\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7254,10 +7941,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Loads and dumps YAML files", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.4.14" + "source": "https://github.com/symfony/finder/tree/v8.1.8" }, "funding": [ { @@ -7277,258 +7964,231 @@ "type": "tidelift" } ], - "time": "2026-06-08T20:24:16+00:00" + "time": "2026-09-26T06:33:49+00:00" }, { - "name": "tecnickcom/tcpdf", - "version": "6.11.3", + "name": "symfony/html-sanitizer", + "version": "v8.1.8", "source": { "type": "git", - "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "b18f6119161019916c5bb07cb8da5205ae5c1b63" + "url": "https://github.com/symfony/html-sanitizer.git", + "reference": "c67061a71d3f8b55f899faee3167422efa4db027" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/b18f6119161019916c5bb07cb8da5205ae5c1b63", - "reference": "b18f6119161019916c5bb07cb8da5205ae5c1b63", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/c67061a71d3f8b55f899faee3167422efa4db027", + "reference": "c67061a71d3f8b55f899faee3167422efa4db027", "shasum": "" }, "require": { - "ext-curl": "*", - "php": ">=7.1.0" - }, - "suggest": { - "ext-gd": "Enables additional image handling in some workflows.", - "ext-imagick": "Enables additional image format support when available.", - "ext-zlib": "Recommended for compressed streams and related features.", - "tecnickcom/tc-lib-pdf": "Modern replacement for TCPDF for new projects." + "ext-dom": "*", + "league/uri": "^6.5|^7.0", + "php": ">=8.4.1" }, "type": "library", "autoload": { - "classmap": [ - "config", - "include", - "tcpdf.php", - "tcpdf_barcodes_1d.php", - "tcpdf_barcodes_2d.php", - "include/tcpdf_colors.php", - "include/tcpdf_filters.php", - "include/tcpdf_font_data.php", - "include/tcpdf_fonts.php", - "include/tcpdf_images.php", - "include/tcpdf_static.php", - "include/barcodes/datamatrix.php", - "include/barcodes/pdf417.php", - "include/barcodes/qrcode.php" + "psr-4": { + "Symfony\\Component\\HtmlSanitizer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0-or-later" + "MIT" ], "authors": [ { - "name": "Nicola Asuni", - "email": "info@tecnick.com", - "role": "lead" + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Deprecated legacy PDF engine for PHP. For new projects use tecnickcom/tc-lib-pdf.", - "homepage": "https://tcpdf.org", + "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.", + "homepage": "https://symfony.com", "keywords": [ - "PDFD32000-2008", - "TCPDF", - "barcodes", - "datamatrix", - "pdf", - "pdf417", - "qrcode" + "Purifier", + "html", + "sanitizer" ], "support": { - "issues": "https://github.com/tecnickcom/TCPDF/issues", - "source": "https://github.com/tecnickcom/TCPDF" + "source": "https://github.com/symfony/html-sanitizer/tree/v8.1.8" }, "funding": [ { - "url": "https://www.paypal.com/donate/?hosted_button_id=NZUEC5XS8MFBJ", - "type": "paypal" + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2026-04-21T17:00:18+00:00" + "time": "2026-09-28T08:00:04+00:00" }, { - "name": "thecodingmachine/safe", - "version": "v3.4.0", + "name": "symfony/http-foundation", + "version": "v8.1.8", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/safe.git", - "reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "662f5257658d4f60deff1bc790e9f2c68cb391bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/705683a25bacf0d4860c7dea4d7947bfd09eea19", - "reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/662f5257658d4f60deff1bc790e9f2c68cb391bf", + "reference": "662f5257658d4f60deff1bc790e9f2c68cb391bf", "shasum": "" }, "require": { - "php": "^8.1" + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" + }, + "conflict": { + "doctrine/dbal": "<4.3" }, "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.4", - "phpstan/phpstan": "^2", - "phpunit/phpunit": "^10", - "squizlabs/php_codesniffer": "^3.2" + "doctrine/dbal": "^4.3", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^8.0" }, "type": "library", "autoload": { - "files": [ - "lib/special_cases.php", - "generated/apache.php", - "generated/apcu.php", - "generated/array.php", - "generated/bzip2.php", - "generated/calendar.php", - "generated/classobj.php", - "generated/com.php", - "generated/cubrid.php", - "generated/curl.php", - "generated/datetime.php", - "generated/dir.php", - "generated/eio.php", - "generated/errorfunc.php", - "generated/exec.php", - "generated/fileinfo.php", - "generated/filesystem.php", - "generated/filter.php", - "generated/fpm.php", - "generated/ftp.php", - "generated/funchand.php", - "generated/gettext.php", - "generated/gmp.php", - "generated/gnupg.php", - "generated/hash.php", - "generated/ibase.php", - "generated/ibmDb2.php", - "generated/iconv.php", - "generated/image.php", - "generated/imap.php", - "generated/info.php", - "generated/inotify.php", - "generated/json.php", - "generated/ldap.php", - "generated/libxml.php", - "generated/lzf.php", - "generated/mailparse.php", - "generated/mbstring.php", - "generated/misc.php", - "generated/mysql.php", - "generated/mysqli.php", - "generated/network.php", - "generated/oci8.php", - "generated/opcache.php", - "generated/openssl.php", - "generated/outcontrol.php", - "generated/pcntl.php", - "generated/pcre.php", - "generated/pgsql.php", - "generated/posix.php", - "generated/ps.php", - "generated/pspell.php", - "generated/readline.php", - "generated/rnp.php", - "generated/rpminfo.php", - "generated/rrd.php", - "generated/sem.php", - "generated/session.php", - "generated/shmop.php", - "generated/sockets.php", - "generated/sodium.php", - "generated/solr.php", - "generated/spl.php", - "generated/sqlsrv.php", - "generated/ssdeep.php", - "generated/ssh2.php", - "generated/stream.php", - "generated/strings.php", - "generated/swoole.php", - "generated/uodbc.php", - "generated/uopz.php", - "generated/url.php", - "generated/var.php", - "generated/xdiff.php", - "generated/xml.php", - "generated/xmlrpc.php", - "generated/yaml.php", - "generated/yaz.php", - "generated/zip.php", - "generated/zlib.php" - ], - "classmap": [ - "lib/DateTime.php", - "lib/DateTimeImmutable.php", - "lib/Exceptions/", - "generated/Exceptions/" + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "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": { - "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v3.4.0" + "source": "https://github.com/symfony/http-foundation/tree/v8.1.8" }, "funding": [ { - "url": "https://github.com/OskarStark", - "type": "github" - }, + "url": "https://symfony.com/sponsor", + "type": "custom" + }, { - "url": "https://github.com/shish", + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://github.com/silasjoisten", + "url": "https://github.com/nicolas-grekas", "type": "github" }, { - "url": "https://github.com/staabm", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2026-02-04T18:08:13+00:00" + "time": "2026-09-24T07:13:53+00:00" }, { - "name": "theiconic/name-parser", - "version": "v1.2.11", + "name": "symfony/http-kernel", + "version": "v8.1.8", "source": { "type": "git", - "url": "https://github.com/theiconic/name-parser.git", - "reference": "9a54a713bf5b2e7fd990828147d42de16bf8a253" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "51c014e881d8b4ce61e56c0d4105f65b50df786a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theiconic/name-parser/zipball/9a54a713bf5b2e7fd990828147d42de16bf8a253", - "reference": "9a54a713bf5b2e7fd990828147d42de16bf8a253", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/51c014e881d8b4ce61e56c0d4105f65b50df786a", + "reference": "51c014e881d8b4ce61e56c0d4105f65b50df786a", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.4.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/dependency-injection": "<8.1", + "symfony/flex": "<2.10", + "symfony/http-client-contracts": "<2.5", + "symfony/serializer": "<7.4.15|>=8.0,<8.0.15|>=8.1,<8.1.2", + "symfony/translation-contracts": "<2.5", + "symfony/var-dumper": "<8.1", + "symfony/web-profiler-bundle": "<8.1", + "twig/twig": "<3.21" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "php-mock/php-mock-phpunit": "^2.1", - "phpunit/phpunit": "^7.0" + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/css-selector": "^7.4|^8.0", + "symfony/dependency-injection": "^8.1", + "symfony/dom-crawler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^8.1", + "symfony/var-exporter": "^7.4|^8.0", + "twig/twig": "^3.21|^4.0" }, "type": "library", "autoload": { "psr-4": { - "TheIconic\\NameParser\\": [ - "src/", - "tests/" - ] - } + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7536,125 +8196,168 @@ ], "authors": [ { - "name": "The Iconic", - "email": "engineering@theiconic.com.au" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHP library for parsing a string containing a full name into its parts", + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/theiconic/name-parser/issues", - "source": "https://github.com/theiconic/name-parser/tree/v1.2.11" + "source": "https://github.com/symfony/http-kernel/tree/v8.1.8" }, - "time": "2019-11-14T14:08:48+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-29T14:08:01+00:00" }, { - "name": "twig/twig", - "version": "v3.27.1", + "name": "symfony/mailer", + "version": "v7.4.19", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "ae2071bffb38f04847fc0864d730c94b9cb8ab74" + "url": "https://github.com/symfony/mailer.git", + "reference": "6f6f2441bef07a42d2617b9b3aadf04a321aa514" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/ae2071bffb38f04847fc0864d730c94b9cb8ab74", - "reference": "ae2071bffb38f04847fc0864d730c94b9cb8ab74", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6f6f2441bef07a42d2617b9b3aadf04a321aa514", + "reference": "6f6f2441bef07a42d2617b9b3aadf04a321aa514", "shasum": "" }, "require": { - "php": ">=8.1.0", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" }, "require-dev": { - "php-cs-fixer/shim": "^3.0@stable", - "phpstan/phpstan": "^2.0@stable", - "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { - "files": [ - "src/Resources/core.php", - "src/Resources/debug.php", - "src/Resources/escaper.php", - "src/Resources/string_loader.php" - ], "psr-4": { - "Twig\\": "src/" - } + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" + "email": "fabien@symfony.com" }, { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.27.1" + "source": "https://github.com/symfony/mailer/tree/v7.4.19" }, "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, { "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2026-05-30T17:09:26+00:00" + "time": "2026-09-15T06:01:15+00:00" }, { - "name": "voku/portable-ascii", - "version": "2.1.1", + "name": "symfony/mime", + "version": "v7.4.19", "source": { "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "8e1051fe39379367aecf014f41744ce7539a856f" + "url": "https://github.com/symfony/mime.git", + "reference": "f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/8e1051fe39379367aecf014f41744ce7539a856f", - "reference": "8e1051fe39379367aecf014f41744ce7539a856f", + "url": "https://api.github.com/repos/symfony/mime/zipball/f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693", + "reference": "f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693", "shasum": "" }, "require": { - "php": ">=7.1.0" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" }, - "require-dev": { - "phpunit/phpunit": "~8.5 || ~9.6 || ~10.5 || ~11.5" + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, - "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.44|^7.4.17|^8.1.5" }, "type": "library", "autoload": { "psr-4": { - "voku\\": "src/voku/" - } + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7662,78 +8365,79 @@ ], "authors": [ { - "name": "Lars Moelleken", - "homepage": "https://www.moelleken.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", "keywords": [ - "ascii", - "clean", - "php" + "mime", + "mime-type" ], "support": { - "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/2.1.1" + "source": "https://github.com/symfony/mime/tree/v7.4.19" }, "funding": [ { - "url": "https://www.paypal.me/moelleken", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://github.com/voku", + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://opencollective.com/portable-ascii", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/voku", - "type": "patreon" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2026-04-26T05:33:54+00:00" + "time": "2026-09-04T10:45:44+00:00" }, { - "name": "web-auth/cose-lib", - "version": "4.5.2", + "name": "symfony/polyfill-ctype", + "version": "v1.37.0", "source": { "type": "git", - "url": "https://github.com/web-auth/cose-lib.git", - "reference": "5b38660f90070a8e45f3dbc9528ade3b608dd77d" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/cose-lib/zipball/5b38660f90070a8e45f3dbc9528ade3b608dd77d", - "reference": "5b38660f90070a8e45f3dbc9528ade3b608dd77d", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2", "shasum": "" }, "require": { - "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17", - "ext-json": "*", - "ext-openssl": "*", - "php": ">=8.1", - "spomky-labs/pki-framework": "^1.0" + "php": ">=7.2" }, - "require-dev": { - "spomky-labs/cbor-php": "^3.2.2" + "provide": { + "ext-ctype": "*" }, "suggest": { - "ext-bcmath": "For better performance, please install either GMP (recommended) or BCMath extension", - "ext-gmp": "For better performance, please install either GMP (recommended) or BCMath extension", - "spomky-labs/cbor-php": "For COSE Signature support" + "ext-ctype": "For best performance" }, "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Cose\\": "src/" + "Symfony\\Polyfill\\Ctype\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -7742,84 +8446,78 @@ ], "authors": [ { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { - "name": "All contributors", - "homepage": "https://github.com/web-auth/cose/contributors" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "CBOR Object Signing and Encryption (COSE) For PHP", - "homepage": "https://github.com/web-auth", - "keywords": [ - "COSE", - "RFC8152" + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" ], "support": { - "issues": "https://github.com/web-auth/cose-lib/issues", - "source": "https://github.com/web-auth/cose-lib/tree/4.5.2" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" }, "funding": [ { - "url": "https://github.com/Spomky", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2026-05-03T09:49:50+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { - "name": "web-auth/webauthn-lib", - "version": "5.3.5", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/web-auth/webauthn-lib.git", - "reference": "9e0986d999f4102e24ac8a598d3a80d98b56c19f" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "5cac8f4db97208823aa353f59a01faad2da52c75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/9e0986d999f4102e24ac8a598d3a80d98b56c19f", - "reference": "9e0986d999f4102e24ac8a598d3a80d98b56c19f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5cac8f4db97208823aa353f59a01faad2da52c75", + "reference": "5cac8f4db97208823aa353f59a01faad2da52c75", "shasum": "" }, "require": { - "ext-json": "*", - "ext-openssl": "*", - "paragonie/constant_time_encoding": "^2.6|^3.0", - "php": ">=8.2", - "phpdocumentor/reflection-docblock": "^5.3|^6.0", - "psr/clock": "^1.0", - "psr/event-dispatcher": "^1.0", - "psr/log": "^1.0|^2.0|^3.0", - "spomky-labs/cbor-php": "^3.0", - "spomky-labs/pki-framework": "^1.0", - "symfony/clock": "^6.4|^7.0|^8.0", - "symfony/deprecation-contracts": "^3.2", - "symfony/property-access": "^6.4|^7.0|^8.0", - "symfony/property-info": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0", - "symfony/uid": "^6.4|^7.0|^8.0", - "web-auth/cose-lib": "^4.2.3" + "php": ">=7.2" }, "suggest": { - "psr/log-implementation": "Recommended to receive logs from the library", - "symfony/event-dispatcher": "Recommended to use dispatched events", - "web-token/jwt-library": "Mandatory for fetching Metadata Statement from distant sources" + "ext-intl": "For best performance" }, "type": "library", "extra": { "thanks": { - "url": "https://github.com/web-auth/webauthn-framework", - "name": "web-auth/webauthn-framework" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Webauthn\\": "src/" + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -7828,74 +8526,81 @@ ], "authors": [ { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "All contributors", - "homepage": "https://github.com/web-auth/webauthn-library/contributors" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "FIDO2/Webauthn Support For PHP", - "homepage": "https://github.com/web-auth", + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", "keywords": [ - "FIDO2", - "fido", - "webauthn" + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/web-auth/webauthn-lib/tree/5.3.5" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.43.0" }, "funding": [ { - "url": "https://github.com/Spomky", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2026-05-31T15:00:08+00:00" + "time": "2026-09-25T15:46:47+00:00" }, { - "name": "webmozart/assert", - "version": "2.4.1", + "name": "symfony/polyfill-intl-idn", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "2ccb7c2e821038c03a3e6e1700c570c158c55f70" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "533d68cf99c8f8ee2e8893c59ed59192e92cfd74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/2ccb7c2e821038c03a3e6e1700c570c158c55f70", - "reference": "2ccb7c2e821038c03a3e6e1700c570c158c55f70", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/533d68cf99c8f8ee2e8893c59ed59192e92cfd74", + "reference": "533d68cf99c8f8ee2e8893c59ed59192e92cfd74", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-date": "*", - "ext-filter": "*", - "php": "^8.2" + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" }, "suggest": { - "ext-intl": "", - "ext-simplexml": "", - "ext-spl": "" + "ext-intl": "For best performance" }, "type": "library", "extra": { - "psalm": { - "pluginClass": "Webmozart\\Assert\\PsalmPlugin" - }, - "branch-alias": { - "dev-master": "2.0-dev", - "dev-feature/2-0": "2.0-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Webmozart\\Assert\\": "src/" + "Symfony\\Polyfill\\Intl\\Idn\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -7904,559 +8609,579 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Laurent Bassin", + "email": "laurent@bassin.info" }, { - "name": "Woody Gilk", - "email": "woody.gilk@gmail.com" + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Assertions to validate method input/output with nice error messages.", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", "keywords": [ - "assert", - "check", - "validate" + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/2.4.1" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.43.0" }, - "time": "2026-06-15T15:31:57+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-23T14:40:04+00:00" }, { - "name": "yiisoft/yii2", - "version": "2.0.55", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/yiisoft/yii2-framework.git", - "reference": "b900eecdb225041a4c4e0f5e0e5336f606a23bdb" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/b900eecdb225041a4c4e0f5e0e5336f606a23bdb", - "reference": "b900eecdb225041a4c4e0f5e0e5336f606a23bdb", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/ebd57ccc7edb93d632e184efbe7693d2517bab3b", + "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b", "shasum": "" }, "require": { - "bower-asset/inputmask": "^5.0.8 ", - "bower-asset/jquery": "3.7.*@stable | 3.6.*@stable | 3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", - "bower-asset/punycode": "^2.2", - "bower-asset/yii2-pjax": "~2.0.1", - "cebe/markdown": "~1.0.0 | ~1.1.0 | ~1.2.0", - "ext-ctype": "*", - "ext-mbstring": "*", - "ezyang/htmlpurifier": "^4.17", - "lib-pcre": "*", - "php": ">=7.4.0", - "yiisoft/yii2-composer": "~2.0.4" + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" }, - "bin": [ - "yii" - ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "yii\\": "" - } + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Qiang Xue", - "email": "qiang.xue@gmail.com", - "homepage": "https://www.yiiframework.com/", - "role": "Founder and project lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Alexander Makarov", - "email": "sam@rmcreative.ru", - "homepage": "https://rmcreative.ru/", - "role": "Core framework development" - }, + "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.43.0" + }, + "funding": [ { - "name": "Maurizio Domba", - "homepage": "http://mdomba.info/", - "role": "Core framework development" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "name": "Carsten Brandt", - "email": "mail@cebe.cc", - "homepage": "https://www.cebe.cc/", - "role": "Core framework development" + "url": "https://github.com/fabpot", + "type": "github" }, { - "name": "Timur Ruziev", - "email": "resurtm@gmail.com", - "homepage": "http://resurtm.com/", - "role": "Core framework development" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "name": "Paul Klimov", - "email": "klimov.paul@gmail.com", - "role": "Core framework development" - }, + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-23T22:02:09+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "name": "Dmitry Naumenko", - "email": "d.naumenko.a@gmail.com", - "role": "Core framework development" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Boudewijn Vahrmeijer", - "email": "info@dynasource.eu", - "homepage": "http://dynasource.eu", - "role": "Core framework development" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Yii PHP Framework Version 2", - "homepage": "https://www.yiiframework.com/", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "framework", - "yii2" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], "support": { - "forum": "https://forum.yiiframework.com/", - "irc": "ircs://irc.libera.chat:6697/yii", - "issues": "https://github.com/yiisoft/yii2/issues?state=open", - "source": "https://github.com/yiisoft/yii2", - "wiki": "https://www.yiiframework.com/wiki" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.43.0" }, "funding": [ { - "url": "https://github.com/yiisoft", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://opencollective.com/yiisoft", - "type": "open_collective" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2026-05-09T14:50:57+00:00" + "time": "2026-09-24T15:19:04+00:00" }, { - "name": "yiisoft/yii2-composer", - "version": "2.0.11", + "name": "symfony/polyfill-php80", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/yiisoft/yii2-composer.git", - "reference": "b684b01ecb119c8287721def726a0e24fec2fef2" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/b684b01ecb119c8287721def726a0e24fec2fef2", - "reference": "b684b01ecb119c8287721def726a0e24fec2fef2", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74", + "reference": "9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 | ^2.0" - }, - "require-dev": { - "composer/composer": "^1.0 | ^2.0@dev", - "phpunit/phpunit": "<7" + "php": ">=7.2" }, - "type": "composer-plugin", + "type": "library", "extra": { - "class": "yii\\composer\\Plugin", - "branch-alias": { - "dev-master": "2.0.x-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "yii\\composer\\": "" - } + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Qiang Xue", - "email": "qiang.xue@gmail.com" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" }, { - "name": "Carsten Brandt", - "email": "mail@cebe.cc" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The composer plugin for Yii extension installer", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "composer", - "extension installer", - "yii2" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "forum": "https://www.yiiframework.com/forum/", - "irc": "ircs://irc.libera.chat:6697/yii", - "issues": "https://github.com/yiisoft/yii2-composer/issues", - "source": "https://github.com/yiisoft/yii2-composer", - "wiki": "https://www.yiiframework.com/wiki/" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.43.0" }, "funding": [ { - "url": "https://github.com/yiisoft", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://opencollective.com/yiisoft", - "type": "open_collective" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-composer", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-13T20:59:36+00:00" + "time": "2026-09-25T15:50:05+00:00" }, { - "name": "yiisoft/yii2-debug", - "version": "2.1.27", + "name": "symfony/polyfill-php81", + "version": "v1.38.1", "source": { "type": "git", - "url": "https://github.com/yiisoft/yii2-debug.git", - "reference": "44e158914911ef81cd7111fd6d46b918f65fae7c" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-debug/zipball/44e158914911ef81cd7111fd6d46b918f65fae7c", - "reference": "44e158914911ef81cd7111fd6d46b918f65fae7c", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/6bfb9c766cacffbc8e118cb87217d08ed84e5cd7", + "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=5.4", - "yiisoft/yii2": "~2.0.13" - }, - "require-dev": { - "cweagans/composer-patches": "^1.7", - "phpunit/phpunit": "4.8.34", - "yiisoft/yii2-coding-standards": "~2.0", - "yiisoft/yii2-swiftmailer": "*" + "php": ">=7.2" }, - "type": "yii2-extension", + "type": "library", "extra": { - "patches": { - "phpunit/phpunit": { - "Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch", - "Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch", - "Fix PHP 8.1 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php81.patch" - }, - "phpunit/phpunit-mock-objects": { - "Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch" - } - }, - "branch-alias": { - "dev-master": "2.0.x-dev" - }, - "composer-exit-on-patch-failure": true + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "yii\\debug\\": "src" - } + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Qiang Xue", - "email": "qiang.xue@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Simon Karlen", - "email": "simi.albi@outlook.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The debugger extension for the Yii framework", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "debug", - "debugger", - "dev", - "yii2" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "forum": "https://www.yiiframework.com/forum/", - "irc": "ircs://irc.libera.chat:6697/yii", - "issues": "https://github.com/yiisoft/yii2-debug/issues", - "source": "https://github.com/yiisoft/yii2-debug", - "wiki": "https://www.yiiframework.com/wiki/" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.38.1" }, "funding": [ { - "url": "https://github.com/yiisoft", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://opencollective.com/yiisoft", - "type": "open_collective" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-debug", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-08T13:32:11+00:00" + "time": "2026-05-26T12:45:58+00:00" }, { - "name": "yiisoft/yii2-queue", - "version": "2.3.8", + "name": "symfony/polyfill-php82", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/yiisoft/yii2-queue.git", - "reference": "e0f935e5b868d53347acfb14ec19faaf16085005" + "url": "https://github.com/symfony/polyfill-php82.git", + "reference": "843bbe8b2a7934307b749751eede0f111f5d1cfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/e0f935e5b868d53347acfb14ec19faaf16085005", - "reference": "e0f935e5b868d53347acfb14ec19faaf16085005", + "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/843bbe8b2a7934307b749751eede0f111f5d1cfc", + "reference": "843bbe8b2a7934307b749751eede0f111f5d1cfc", "shasum": "" }, "require": { - "php": ">=5.5.0", - "symfony/process": "^3.3||^4.0||^5.0||^6.0||^7.0", - "yiisoft/yii2": "~2.0.14" + "php": ">=7.2" }, - "require-dev": { - "aws/aws-sdk-php": ">=2.4", - "cweagans/composer-patches": "^1.7", - "enqueue/amqp-lib": "^0.8||^0.9.10||^0.10.0", - "enqueue/stomp": "^0.8.39||0.10.19", - "opis/closure": "*", - "pda/pheanstalk": "~3.2.1", - "php-amqplib/php-amqplib": "^2.8.0||^3.0.0", - "phpunit/phpunit": "4.8.34", - "yiisoft/yii2-debug": "~2.1.0", - "yiisoft/yii2-gii": "~2.2.0", - "yiisoft/yii2-redis": "2.0.19" - }, - "suggest": { - "aws/aws-sdk-php": "Need for aws SQS.", - "enqueue/amqp-lib": "Need for AMQP interop queue.", - "enqueue/stomp": "Need for Stomp queue.", - "ext-gearman": "Need for Gearman queue.", - "ext-pcntl": "Need for process signals.", - "pda/pheanstalk": "Need for Beanstalk queue.", - "php-amqplib/php-amqplib": "Need for AMQP queue.", - "yiisoft/yii2-redis": "Need for Redis queue." - }, - "type": "yii2-extension", + "type": "library", "extra": { - "patches": { - "phpunit/phpunit": { - "Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch", - "Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch" - }, - "phpunit/phpunit-mock-objects": { - "Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch" - } - }, - "branch-alias": { - "dev-master": "2.x-dev" - }, - "composer-exit-on-patch-failure": true + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "yii\\queue\\": "src", - "yii\\queue\\db\\": "src/drivers/db", - "yii\\queue\\sqs\\": "src/drivers/sqs", - "yii\\queue\\amqp\\": "src/drivers/amqp", - "yii\\queue\\file\\": "src/drivers/file", - "yii\\queue\\sync\\": "src/drivers/sync", - "yii\\queue\\redis\\": "src/drivers/redis", - "yii\\queue\\stomp\\": "src/drivers/stomp", - "yii\\queue\\gearman\\": "src/drivers/gearman", - "yii\\queue\\beanstalk\\": "src/drivers/beanstalk", - "yii\\queue\\amqp_interop\\": "src/drivers/amqp_interop" - } + "Symfony\\Polyfill\\Php82\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Roman Zhuravlev", - "email": "zhuravljov@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Yii2 Queue Extension which supports queues based on DB, Redis, RabbitMQ, Beanstalk, SQS, and Gearman", + "description": "Symfony polyfill backporting some PHP 8.2+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "async", - "beanstalk", - "db", - "gearman", - "gii", - "queue", - "rabbitmq", - "redis", - "sqs", - "yii" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "docs": "https://github.com/yiisoft/yii2-queue/blob/master/docs/guide", - "issues": "https://github.com/yiisoft/yii2-queue/issues", - "source": "https://github.com/yiisoft/yii2-queue" + "source": "https://github.com/symfony/polyfill-php82/tree/v1.43.0" }, "funding": [ { - "url": "https://github.com/yiisoft", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://opencollective.com/yiisoft", - "type": "open_collective" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-queue", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2026-01-08T07:52:05+00:00" + "time": "2026-09-25T15:50:05+00:00" }, { - "name": "yiisoft/yii2-symfonymailer", - "version": "4.0.0", + "name": "symfony/polyfill-php84", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/yiisoft/yii2-symfonymailer.git", - "reference": "21f407239c51fc6d50d369e4469d006afa8c9b2c" + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-symfonymailer/zipball/21f407239c51fc6d50d369e4469d006afa8c9b2c", - "reference": "21f407239c51fc6d50d369e4469d006afa8c9b2c", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/22c6548499cbe5c5bb072fc0c42312dff062a015", + "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/event-dispatcher": "1.0.0", - "symfony/mailer": "^6.4 || ^7.0", - "symfony/mime": "^6.4 || ^7.0", - "yiisoft/yii2": ">=2.0.4" - }, - "require-dev": { - "maglnet/composer-require-checker": "^4.7", - "phpunit/phpunit": "^10.5", - "roave/infection-static-analysis-plugin": "^1.34", - "symplify/easy-coding-standard": "^12.1", - "vimeo/psalm": "^5.20" - }, - "suggest": { - "yiisoft/yii2-psr-log-source": "Allows routing transport logs to your Yii2 logger" + "php": ">=7.2" }, - "type": "yii2-extension", + "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - }, - "sort-packages": true + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "yii\\symfonymailer\\": "src" - } + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Kirill Petrov", - "email": "archibeardrinker@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The SymfonyMailer integration for the Yii framework", + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "email", - "mail", - "mailer", - "symfony", - "symfonymailer", - "yii2" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "forum": "http://www.yiiframework.com/forum/", - "irc": "irc://irc.freenode.net/yii", - "issues": "https://github.com/yiisoft/yii2-symfonymailer/issues", - "source": "https://github.com/yiisoft/yii2-symfonymailer", - "wiki": "http://www.yiiframework.com/wiki/" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.43.0" }, "funding": [ { - "url": "https://github.com/yiisoft", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://opencollective.com/yiisoft", - "type": "open_collective" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-symfonymailer", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-01-29T14:13:45+00:00" - } - ], - "packages-dev": [ + "time": "2026-09-23T22:01:09+00:00" + }, { - "name": "behat/gherkin", - "version": "v4.17.0", + "name": "symfony/polyfill-php85", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/Behat/Gherkin.git", - "reference": "5c8b3149fac39b5a79942b64eeec59a5ee4001c0" + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "86a42cbcc07adc331481a5ab310a4024bfc227f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/5c8b3149fac39b5a79942b64eeec59a5ee4001c0", - "reference": "5c8b3149fac39b5a79942b64eeec59a5ee4001c0", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/86a42cbcc07adc331481a5ab310a4024bfc227f6", + "reference": "86a42cbcc07adc331481a5ab310a4024bfc227f6", "shasum": "" }, "require": { - "composer-runtime-api": "^2.2", - "php": ">=8.1 <8.6" - }, - "require-dev": { - "cucumber/gherkin-monorepo": "dev-gherkin-v39.1.0", - "friendsofphp/php-cs-fixer": "^3.77", - "mikey179/vfsstream": "^1.6", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^2", - "phpstan/phpstan-phpunit": "^2", - "phpunit/phpunit": "^10.5", - "symfony/yaml": "^5.4 || ^6.4 || ^7.0" - }, - "suggest": { - "symfony/yaml": "If you want to parse features, represented in YAML files" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "4.x-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Behat\\Gherkin\\": "src/" - } + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8464,134 +9189,78 @@ ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "https://everzet.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Gherkin DSL parser for PHP", - "homepage": "https://behat.org/", + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "BDD", - "Behat", - "Cucumber", - "DSL", - "gherkin", - "parser" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.17.0" + "source": "https://github.com/symfony/polyfill-php85/tree/v1.43.0" }, "funding": [ { - "url": "https://github.com/acoulton", - "type": "github" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "url": "https://github.com/carlos-granados", + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://github.com/stof", + "url": "https://github.com/nicolas-grekas", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2026-05-18T09:33:47+00:00" + "time": "2026-09-25T15:46:47+00:00" }, { - "name": "codeception/codeception", - "version": "5.3.5", + "name": "symfony/polyfill-php86", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/Codeception/Codeception.git", - "reference": "83c2986ec2abe594cee2f706d9ec7aca2878fbe0" + "url": "https://github.com/symfony/polyfill-php86.git", + "reference": "8840df45b24f33a49dc419fa18dc0057231ae1d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/83c2986ec2abe594cee2f706d9ec7aca2878fbe0", - "reference": "83c2986ec2abe594cee2f706d9ec7aca2878fbe0", + "url": "https://api.github.com/repos/symfony/polyfill-php86/zipball/8840df45b24f33a49dc419fa18dc0057231ae1d8", + "reference": "8840df45b24f33a49dc419fa18dc0057231ae1d8", "shasum": "" }, "require": { - "behat/gherkin": "^4.12", - "codeception/lib-asserts": "^2.2 | ^3.0.1", - "codeception/stub": "^4.1", - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "php": "^8.2", - "phpunit/php-code-coverage": "^9.2 | ^10.0 | ^11.0 | ^12.0 | ^13.0", - "phpunit/php-text-template": "^2.0 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "phpunit/php-timer": "^5.0.3 | ^6.0 | ^7.0 | ^8.0 | ^9.0", - "phpunit/phpunit": "^9.5.20 | ^10.0 | ^11.0 | ^12.0 | ^13.0", - "psy/psysh": "^0.11.2 | ^0.12", - "sebastian/comparator": "^4.0.5 | ^5.0 | ^6.0 | ^7.0 | ^8.0", - "sebastian/diff": "^4.0.3 | ^5.0 | ^6.0 | ^7.0 | ^8.0", - "symfony/console": ">=5.4.24 <9.0", - "symfony/css-selector": ">=5.4.24 <9.0", - "symfony/event-dispatcher": ">=5.4.24 <9.0", - "symfony/finder": ">=5.4.24 <9.0", - "symfony/var-dumper": ">=5.4.24 <9.0", - "symfony/yaml": ">=5.4.24 <9.0" - }, - "conflict": { - "codeception/lib-innerbrowser": "<3.1.3", - "codeception/module-filesystem": "<3.0", - "codeception/module-phpbrowser": "<2.5" - }, - "replace": { - "codeception/phpunit-wrapper": "*" - }, - "require-dev": { - "codeception/lib-innerbrowser": "*@dev", - "codeception/lib-web": "*@dev", - "codeception/module-asserts": "dev-master", - "codeception/module-cli": "*@dev", - "codeception/module-db": "*@dev", - "codeception/module-filesystem": "*@dev", - "codeception/module-phpbrowser": "*@dev", - "codeception/module-webdriver": "*@dev", - "codeception/util-universalframework": "*@dev", - "doctrine/orm": "^3.3", - "ext-simplexml": "*", - "jetbrains/phpstorm-attributes": "^1.0", - "laravel-zero/phar-updater": "^1.4", - "php-webdriver/webdriver": "^1.15", - "stecman/symfony-console-completion": "^0.14 || ^0.15", - "symfony/dotenv": ">=5.4.24 <9.0", - "symfony/error-handler": ">=5.4.24 <9.0", - "symfony/process": ">=5.4.24 <9.0", - "vlucas/phpdotenv": "^5.1" - }, - "suggest": { - "codeception/specify": "BDD-style code blocks", - "codeception/verify": "BDD-style assertions", - "ext-simplexml": "For loading params from XML files", - "stecman/symfony-console-completion": "For BASH autocompletion", - "symfony/dotenv": "For loading params from .env files", - "symfony/phpunit-bridge": "For phpunit-bridge support", - "vlucas/phpdotenv": "For loading params from .env files" + "php": ">=7.2" }, - "bin": [ - "codecept" - ], "type": "library", "extra": { - "branch-alias": { - "dev-main": "5.3.x-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { "files": [ - "functions.php" + "bootstrap.php" ], "psr-4": { - "Codeception\\": "src/Codeception", - "Codeception\\Extension\\": "ext" + "Symfony\\Polyfill\\Php86\\": "" }, "classmap": [ - "src/PHPUnit/TestCase.php" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8600,56 +9269,82 @@ ], "authors": [ { - "name": "Michael Bodnarchuk", - "email": "davert.ua@gmail.com", - "homepage": "https://codeception.com" - } - ], - "description": "All-in-one PHP Testing Framework", - "homepage": "https://codeception.com/", - "keywords": [ - "BDD", - "TDD", - "acceptance testing", - "functional testing", - "unit testing" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/5.3.5" + "source": "https://github.com/symfony/polyfill-php86/tree/v1.43.0" }, "funding": [ { - "url": "https://opencollective.com/codeception", - "type": "open_collective" + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2026-02-18T06:18:00+00:00" + "time": "2026-09-25T15:46:47+00:00" }, { - "name": "codeception/lib-asserts", - "version": "3.2.0", + "name": "symfony/polyfill-uuid", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/Codeception/lib-asserts.git", - "reference": "f161e5d3a9e5ae573ca01cfb3b5601ff5303df03" + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "b23ff8245cc5c4479ea2be3d0132d2e6dd433993" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/f161e5d3a9e5ae573ca01cfb3b5601ff5303df03", - "reference": "f161e5d3a9e5ae573ca01cfb3b5601ff5303df03", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/b23ff8245cc5c4479ea2be3d0132d2e6dd433993", + "reference": "b23ff8245cc5c4479ea2be3d0132d2e6dd433993", "shasum": "" }, "require": { - "ext-dom": "*", - "php": "^8.2 || ^8.3 || ^8.4 || ^8.5", - "phpunit/phpunit": "^11.5 || ^12.0 || ^13.0" + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" }, "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8657,61 +9352,69 @@ ], "authors": [ { - "name": "Michael Bodnarchuk", - "email": "davert@mail.ua", - "homepage": "http://codegyre.com" - }, - { - "name": "Gintautas Miselis" + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" }, { - "name": "Gustavo Nieves", - "homepage": "https://medium.com/@ganieves" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Assertion methods used by Codeception core and Asserts module", - "homepage": "https://codeception.com/", + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", "keywords": [ - "codeception" + "compatibility", + "polyfill", + "portable", + "uuid" ], "support": { - "issues": "https://github.com/Codeception/lib-asserts/issues", - "source": "https://github.com/Codeception/lib-asserts/tree/3.2.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.43.0" }, - "time": "2026-02-06T15:19:32+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-24T05:20:52+00:00" }, { - "name": "codeception/lib-innerbrowser", - "version": "4.1.1", + "name": "symfony/process", + "version": "v7.4.19", "source": { "type": "git", - "url": "https://github.com/Codeception/lib-innerbrowser.git", - "reference": "0fa80deaed7da6a92a0cd4117338394c69196ec6" + "url": "https://github.com/symfony/process.git", + "reference": "ed0ae095b86994d370d5791612e55984f15aa30e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/0fa80deaed7da6a92a0cd4117338394c69196ec6", - "reference": "0fa80deaed7da6a92a0cd4117338394c69196ec6", + "url": "https://api.github.com/repos/symfony/process/zipball/ed0ae095b86994d370d5791612e55984f15aa30e", + "reference": "ed0ae095b86994d370d5791612e55984f15aa30e", "shasum": "" }, "require": { - "codeception/codeception": "^5.0.8", - "codeception/lib-web": "^1.0.1 || ^2", - "ext-dom": "*", - "ext-json": "*", - "ext-mbstring": "*", - "php": "^8.1", - "phpunit/phpunit": "^10.0 || ^11.0 || ^12.0 || ^13.0", - "symfony/browser-kit": "^4.4.24 || ^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/dom-crawler": "^4.4.30 || ^5.4 || ^6.0 || ^7.0 || ^8.0" - }, - "require-dev": { - "codeception/util-universalframework": "^1.0 || ^2.0" + "php": ">=8.2" }, "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8720,56 +9423,68 @@ ], "authors": [ { - "name": "Michael Bodnarchuk", - "email": "davert@mail.ua", - "homepage": "https://codegyre.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Gintautas Miselis" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Parent library for all Codeception framework modules and PhpBrowser", - "homepage": "https://codeception.com/", - "keywords": [ - "codeception" - ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/Codeception/lib-innerbrowser/issues", - "source": "https://github.com/Codeception/lib-innerbrowser/tree/4.1.1" + "source": "https://github.com/symfony/process/tree/v7.4.19" }, - "time": "2026-06-26T22:06:27+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-02T12:38:34+00:00" }, { - "name": "codeception/lib-web", - "version": "2.1.0", + "name": "symfony/property-access", + "version": "v8.1.4", "source": { "type": "git", - "url": "https://github.com/Codeception/lib-web.git", - "reference": "a030a3a22fc8e856b5957086794ed5403c7992d9" + "url": "https://github.com/symfony/property-access.git", + "reference": "1a41232c678972b93ce499a504e19ea09dfcd0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-web/zipball/a030a3a22fc8e856b5957086794ed5403c7992d9", - "reference": "a030a3a22fc8e856b5957086794ed5403c7992d9", + "url": "https://api.github.com/repos/symfony/property-access/zipball/1a41232c678972b93ce499a504e19ea09dfcd0b2", + "reference": "1a41232c678972b93ce499a504e19ea09dfcd0b2", "shasum": "" }, "require": { - "ext-mbstring": "*", - "guzzlehttp/psr7": "^2.0", - "php": "^8.2", - "phpunit/phpunit": "^11.5 | ^12 | ^13", - "symfony/css-selector": ">=4.4.24 <9.0" - }, - "conflict": { - "codeception/codeception": "<5.0.0-alpha3" + "php": ">=8.4.1", + "symfony/property-info": "^7.4.4|^8.0.4" }, "require-dev": { - "php-webdriver/webdriver": "^1.12" + "symfony/cache": "^7.4|^8.0", + "symfony/var-exporter": "^7.4|^8.0" }, "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8778,47 +9493,87 @@ ], "authors": [ { - "name": "Gintautas Miselis" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library containing files used by module-webdriver and lib-innerbrowser or module-phpbrowser", - "homepage": "https://codeception.com/", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", "keywords": [ - "codeception" + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property-path", + "reflection" ], "support": { - "issues": "https://github.com/Codeception/lib-web/issues", - "source": "https://github.com/Codeception/lib-web/tree/2.1.0" + "source": "https://github.com/symfony/property-access/tree/v8.1.4" }, - "time": "2026-02-06T15:22:13+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-07-30T12:40:56+00:00" }, { - "name": "codeception/lib-xml", - "version": "1.1.1", + "name": "symfony/property-info", + "version": "v8.1.8", "source": { "type": "git", - "url": "https://github.com/Codeception/lib-xml.git", - "reference": "758a525ed766ad641cc66cd619d96dbb9e887be2" + "url": "https://github.com/symfony/property-info.git", + "reference": "fe727d4888a92ac9200a2c1b8e0a995b6022afa7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-xml/zipball/758a525ed766ad641cc66cd619d96dbb9e887be2", - "reference": "758a525ed766ad641cc66cd619d96dbb9e887be2", + "url": "https://api.github.com/repos/symfony/property-info/zipball/fe727d4888a92ac9200a2c1b8e0a995b6022afa7", + "reference": "fe727d4888a92ac9200a2c1b8e0a995b6022afa7", "shasum": "" }, "require": { - "codeception/lib-web": "^1.0.6 || ^2", - "ext-dom": "*", - "php": "^8.2", - "symfony/css-selector": ">=4.4.24 <9.0" + "php": ">=8.4.1", + "symfony/string": "^7.4|^8.0", + "symfony/type-info": "^7.4.7|^8.0.7" }, "conflict": { - "codeception/codeception": "<5.0.0-alpha3" + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1" + }, + "require-dev": { + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "symfony/cache": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0" }, "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8827,46 +9582,87 @@ ], "authors": [ { - "name": "Gintautas Miselis" + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Files used by module-rest and module-soap", - "homepage": "https://codeception.com/", + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", "keywords": [ - "codeception" + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" ], "support": { - "issues": "https://github.com/Codeception/lib-xml/issues", - "source": "https://github.com/Codeception/lib-xml/tree/1.1.1" + "source": "https://github.com/symfony/property-info/tree/v8.1.8" }, - "time": "2025-11-28T08:21:33+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-28T19:13:15+00:00" }, { - "name": "codeception/module-asserts", - "version": "3.3.0", + "name": "symfony/psr-http-message-bridge", + "version": "v8.1.0", "source": { "type": "git", - "url": "https://github.com/Codeception/module-asserts.git", - "reference": "3b4ec5dc771a135e13c79f7e9a6eacd74779e4ad" + "url": "https://github.com/symfony/psr-http-message-bridge.git", + "reference": "67fd34de15ded1763aa1e330fe345f080a94022c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/3b4ec5dc771a135e13c79f7e9a6eacd74779e4ad", - "reference": "3b4ec5dc771a135e13c79f7e9a6eacd74779e4ad", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/67fd34de15ded1763aa1e330fe345f080a94022c", + "reference": "67fd34de15ded1763aa1e330fe345f080a94022c", "shasum": "" }, "require": { - "codeception/codeception": "*@dev", - "codeception/lib-asserts": "^3.1", - "php": "^8.2" + "php": ">=8.4.1", + "psr/http-message": "^1.0|^2.0", + "symfony/http-foundation": "^7.4|^8.0" }, "conflict": { - "codeception/codeception": "<5.0" + "php-http/discovery": "<1.15" }, - "type": "library", + "require-dev": { + "nyholm/psr7": "^1.1", + "php-http/discovery": "^1.15", + "psr/log": "^1.1.4|^2|^3", + "symfony/browser-kit": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/runtime": "^7.4|^8.0" + }, + "type": "symfony-bridge", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Bridge\\PsrHttpMessage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8875,115 +9671,78 @@ ], "authors": [ { - "name": "Michael Bodnarchuk" - }, - { - "name": "Gintautas Miselis" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Gustavo Nieves", - "homepage": "https://medium.com/@ganieves" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Codeception module containing various assertions", - "homepage": "https://codeception.com/", + "description": "PSR HTTP message bridge", + "homepage": "https://symfony.com", "keywords": [ - "assertions", - "asserts", - "codeception" + "http", + "http-message", + "psr-17", + "psr-7" ], "support": { - "issues": "https://github.com/Codeception/module-asserts/issues", - "source": "https://github.com/Codeception/module-asserts/tree/3.3.0" - }, - "time": "2025-12-23T21:16:13+00:00" - }, - { - "name": "codeception/module-datafactory", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/Codeception/module-datafactory.git", - "reference": "90b87b554cc8e254865f5e9dbb86d7ce112c51ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-datafactory/zipball/90b87b554cc8e254865f5e9dbb86d7ce112c51ab", - "reference": "90b87b554cc8e254865f5e9dbb86d7ce112c51ab", - "shasum": "" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v8.1.0" }, - "require": { - "codeception/codeception": "^5.0.0-RC6", - "league/factory-muffin": "^3.3", - "league/factory-muffin-faker": "^2.3", - "php": "^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { - "name": "Michael Bodnarchuk" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "DataFactory module for Codeception", - "homepage": "https://codeception.com/", - "keywords": [ - "codeception" - ], - "support": { - "issues": "https://github.com/Codeception/module-datafactory/issues", - "source": "https://github.com/Codeception/module-datafactory/tree/3.0.0" - }, - "time": "2022-07-18T16:38:21+00:00" + "time": "2026-05-29T05:06:50+00:00" }, { - "name": "codeception/module-phpbrowser", - "version": "3.0.2", + "name": "symfony/routing", + "version": "v8.1.8", "source": { "type": "git", - "url": "https://github.com/Codeception/module-phpbrowser.git", - "reference": "460e392c77370f7836012b16e06071eb1607876a" + "url": "https://github.com/symfony/routing.git", + "reference": "e46d741c56485441f37104a3e7eace4e17ed91f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/460e392c77370f7836012b16e06071eb1607876a", - "reference": "460e392c77370f7836012b16e06071eb1607876a", + "url": "https://api.github.com/repos/symfony/routing/zipball/e46d741c56485441f37104a3e7eace4e17ed91f9", + "reference": "e46d741c56485441f37104a3e7eace4e17ed91f9", "shasum": "" }, "require": { - "codeception/codeception": "*@dev", - "codeception/lib-innerbrowser": "*@dev", - "ext-json": "*", - "guzzlehttp/guzzle": "^7.4", - "php": "^8.1", - "symfony/browser-kit": "^5.4 | ^6.0 | ^7.0" - }, - "conflict": { - "codeception/codeception": "<5.0", - "codeception/lib-innerbrowser": "<3.0" + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "aws/aws-sdk-php": "^3.199", - "codeception/module-rest": "^2.0 | *@dev", - "ext-curl": "*", - "phpstan/phpstan": "^1.10", - "squizlabs/php_codesniffer": "^3.10" - }, - "suggest": { - "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests" + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0" }, "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8992,62 +9751,103 @@ ], "authors": [ { - "name": "Michael Bodnarchuk" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Gintautas Miselis" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Codeception module for testing web application over HTTP", - "homepage": "https://codeception.com/", + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", "keywords": [ - "codeception", - "functional-testing", - "http" + "router", + "routing", + "uri", + "url" ], "support": { - "issues": "https://github.com/Codeception/module-phpbrowser/issues", - "source": "https://github.com/Codeception/module-phpbrowser/tree/3.0.2" + "source": "https://github.com/symfony/routing/tree/v8.1.8" }, - "time": "2025-09-04T10:45:58+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-28T19:13:15+00:00" }, { - "name": "codeception/module-rest", - "version": "3.4.3", + "name": "symfony/serializer", + "version": "v8.1.8", "source": { "type": "git", - "url": "https://github.com/Codeception/module-rest.git", - "reference": "596817fcb5a603f6f55306f67f9eb84943df8998" + "url": "https://github.com/symfony/serializer.git", + "reference": "df54c4fe859d945eb633d2c5e6a410ce535f21e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-rest/zipball/596817fcb5a603f6f55306f67f9eb84943df8998", - "reference": "596817fcb5a603f6f55306f67f9eb84943df8998", + "url": "https://api.github.com/repos/symfony/serializer/zipball/df54c4fe859d945eb633d2c5e6a410ce535f21e4", + "reference": "df54c4fe859d945eb633d2c5e6a410ce535f21e4", "shasum": "" }, "require": { - "codeception/codeception": "^5.0.8", - "codeception/lib-xml": "^1.0", - "ext-dom": "*", - "ext-json": "*", - "justinrainbow/json-schema": "^5.2.9 || ^6", - "php": "^8.2", - "softcreatr/jsonpath": "^0.8 || ^0.9 || ^0.10 || ^0.11 || ^1.0" + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" }, - "require-dev": { - "codeception/lib-innerbrowser": "^3.0 | ^4.0", - "codeception/stub": "^4.0", - "codeception/util-universalframework": "^2.0", - "ext-libxml": "*", - "ext-simplexml": "*" + "conflict": { + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/property-access": "<8.1", + "symfony/property-info": "<7.4.15", + "symfony/type-info": "<7.4" }, - "suggest": { - "aws/aws-sdk-php": "For using AWS Auth" + "require-dev": { + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "seld/jsonlint": "^1.10", + "symfony/cache": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/error-handler": "^7.4|^8.0", + "symfony/filesystem": "^7.4|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/property-access": "^8.1", + "symfony/property-info": "^7.4.15|~8.0.15|^8.1.2", + "symfony/translation-contracts": "^2.5|^3", + "symfony/type-info": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0", + "symfony/var-exporter": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0" }, "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Serializer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -9056,158 +9856,78 @@ ], "authors": [ { - "name": "Gintautas Miselis" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "REST module for Codeception", - "homepage": "https://codeception.com/", - "keywords": [ - "codeception", - "rest" - ], + "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/Codeception/module-rest/issues", - "source": "https://github.com/Codeception/module-rest/tree/3.4.3" - }, - "time": "2025-12-22T14:13:56+00:00" - }, - { - "name": "codeception/module-yii2", - "version": "1.1.12", - "source": { - "type": "git", - "url": "https://github.com/Codeception/module-yii2.git", - "reference": "1ebe6bc2a7f307a6c246026a905612a40ef64859" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-yii2/zipball/1ebe6bc2a7f307a6c246026a905612a40ef64859", - "reference": "1ebe6bc2a7f307a6c246026a905612a40ef64859", - "shasum": "" - }, - "require": { - "codeception/codeception": "^5.0.8", - "codeception/lib-innerbrowser": "^3.0 | ^4.0", - "php": "^8.0" - }, - "require-dev": { - "codeception/module-asserts": ">= 3.0", - "codeception/module-filesystem": "> 3.0", - "codeception/verify": "^3.0", - "codemix/yii2-localeurls": "^1.7", - "phpstan/phpstan": "^1.10", - "yiisoft/yii2": "dev-master", - "yiisoft/yii2-app-advanced": "dev-master" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] + "source": "https://github.com/symfony/serializer/tree/v8.1.8" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, { - "name": "Alexander Makarov" + "url": "https://github.com/fabpot", + "type": "github" }, { - "name": "Sam Mouse" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "name": "Michael Bodnarchuk" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "Codeception module for Yii2 framework", - "homepage": "https://codeception.com/", - "keywords": [ - "codeception", - "yii2" - ], - "support": { - "issues": "https://github.com/Codeception/module-yii2/issues", - "source": "https://github.com/Codeception/module-yii2/tree/1.1.12" - }, - "time": "2024-12-09T14:34:26+00:00" + "time": "2026-09-28T09:40:25+00:00" }, { - "name": "codeception/stub", - "version": "4.3.0", + "name": "symfony/service-contracts", + "version": "v3.7.3", "source": { "type": "git", - "url": "https://github.com/Codeception/Stub.git", - "reference": "6305b97eaf6ea9bdaed29a5bd4d6f2948f577d8f" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "15e6a07ec2a2c75ceb1b21dd98105ee8456d2257" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/6305b97eaf6ea9bdaed29a5bd4d6f2948f577d8f", - "reference": "6305b97eaf6ea9bdaed29a5bd4d6f2948f577d8f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/15e6a07ec2a2c75ceb1b21dd98105ee8456d2257", + "reference": "15e6a07ec2a2c75ceb1b21dd98105ee8456d2257", "shasum": "" }, "require": { - "php": "^8.1", - "phpunit/phpunit": "^8.4 | ^9.0 | ^10.0 | ^11 | ^12 | ^13" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "codeception/codeception": "<5.0.6" - }, - "require-dev": { - "consolidation/robo": "^4.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Codeception\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", - "support": { - "issues": "https://github.com/Codeception/Stub/issues", - "source": "https://github.com/Codeception/Stub/tree/4.3.0" - }, - "time": "2026-02-06T15:19:04+00:00" - }, - { - "name": "composer/ca-bundle", - "version": "1.5.12", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "00a2f4201641d5c53f7fc0195e6c8d9fcc321a78" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/00a2f4201641d5c53f7fc0195e6c8d9fcc321a78", - "reference": "00a2f4201641d5c53f7fc0195e6c8d9fcc321a78", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^8 || ^9", - "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/process": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { - "dev-main": "1.x-dev" + "dev-main": "3.7-dev" } }, "autoload": { "psr-4": { - "Composer\\CaBundle\\": "src" - } + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9215,77 +9935,2398 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.12" + "source": "https://github.com/symfony/service-contracts/tree/v3.7.3" }, "funding": [ { - "url": "https://packagist.com", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://github.com/composer", + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2026-05-19T11:26:22+00:00" + "time": "2026-07-27T15:39:01+00:00" }, { - "name": "craftcms/ckeditor", - "version": "4.11.4", + "name": "symfony/string", + "version": "v8.1.7", "source": { "type": "git", - "url": "https://github.com/craftcms/ckeditor.git", - "reference": "f33fa49e868c3a26d799d0b2c7c410119599d9a2" + "url": "https://github.com/symfony/string.git", + "reference": "d950140b5f56f31901e5b7a0c04ffc3a3deb943c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/ckeditor/zipball/f33fa49e868c3a26d799d0b2c7c410119599d9a2", - "reference": "f33fa49e868c3a26d799d0b2c7c410119599d9a2", + "url": "https://api.github.com/repos/symfony/string/zipball/d950140b5f56f31901e5b7a0c04ffc3a3deb943c", + "reference": "d950140b5f56f31901e5b7a0c04ffc3a3deb943c", "shasum": "" }, "require": { - "craftcms/cms": "^5.6.1", - "craftcms/html-field": "^3.4.0", - "embed/embed": "^4.4", - "nystudio107/craft-code-editor": ">=1.0.8 <=1.0.13 || ^1.0.16", - "php": "^8.2" + "php": ">=8.4.1", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-intl-grapheme": "^1.33", + "symfony/polyfill-intl-normalizer": "^1.0", + "symfony/polyfill-mbstring": "^1.0" }, - "require-dev": { - "craftcms/ecs": "dev-main", - "craftcms/phpstan": "dev-main", - "craftcms/rector": "dev-main", - "vlucas/phpdotenv": "^5.5" + "conflict": { + "symfony/translation-contracts": "<2.5" }, - "type": "craft-plugin", - "extra": { - "name": "CKEditor", - "handle": "ckeditor", - "documentationUrl": "https://github.com/craftcms/ckeditor/blob/master/README.md" + "require-dev": { + "symfony/emoji": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^7.4|^8.0" }, + "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "craft\\ckeditor\\": "src/" - } + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-or-later" + "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/v8.1.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-11T14:51:16+00:00" + }, + { + "name": "symfony/translation", + "version": "v8.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "d9e1caba0d6b6f9a26710af8a2f88d37f001215a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/d9e1caba0d6b6f9a26710af8a2f88d37f001215a", + "reference": "d9e1caba0d6b6f9a26710af8a2f88d37f001215a", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation-contracts": "^3.6.1" + }, + "conflict": { + "nikic/php-parser": "<5.0", + "symfony/http-client-contracts": "<2.5", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^7.4|^8.0" + }, + "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/v8.1.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-08-21T17:47:34+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.7.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "ccb206b98faccc511ebae8e5fad50f2dc0b30621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/ccb206b98faccc511ebae8e5fad50f2dc0b30621", + "reference": "ccb206b98faccc511ebae8e5fad50f2dc0b30621", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "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.7.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-06-05T06:23:12+00:00" + }, + { + "name": "symfony/type-info", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/type-info.git", + "reference": "18e1d891f0b8776141f281f7b6f5e67e4df9d9cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/type-info/zipball/18e1d891f0b8776141f281f7b6f5e67e4df9d9cd", + "reference": "18e1d891f0b8776141f281f7b6f5e67e4df9d9cd", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "psr/container": "^1.1|^2.0" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.30" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.30|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", + "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], + "support": { + "source": "https://github.com/symfony/type-info/tree/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-28T19:13:15+00:00" + }, + { + "name": "symfony/uid", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "f412a0b5edd75eb3104a93bd0d11fd2ea3da34e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/f412a0b5edd75eb3104a93bd0d11fd2ea3da34e4", + "reference": "f412a0b5edd75eb3104a93bd0d11fd2ea3da34e4", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-23T17:45:45+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v8.1.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "741a8c4c948b0bb9bd3653daacd3644c73c40ea5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/741a8c4c948b0bb9bd3653daacd3644c73c40ea5", + "reference": "741a8c4c948b0bb9bd3653daacd3644c73c40ea5", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "symfony/console": "<7.4", + "symfony/error-handler": "<7.4" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", + "twig/twig": "^3.12|^4.0" + }, + "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/v8.1.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-03T16:02:27+00:00" + }, + { + "name": "symfony/yaml", + "version": "v8.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "030e96eed0303223bfca3af9109e9e64830b6ec3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/030e96eed0303223bfca3af9109e9e64830b6ec3", + "reference": "030e96eed0303223bfca3af9109e9e64830b6ec3", + "shasum": "" + }, + "require": { + "php": ">=8.4.1", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<7.4" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "yaml/yaml-test-suite": "*" + }, + "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/v8.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-26T06:33:49+00:00" + }, + { + "name": "tecnickcom/tcpdf", + "version": "6.11.4", + "source": { + "type": "git", + "url": "https://github.com/tecnickcom/TCPDF.git", + "reference": "fbbaf14cfae8fe646f154f7c530d15ec25764040" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/fbbaf14cfae8fe646f154f7c530d15ec25764040", + "reference": "fbbaf14cfae8fe646f154f7c530d15ec25764040", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=7.1.0" + }, + "suggest": { + "ext-gd": "Enables additional image handling in some workflows.", + "ext-imagick": "Enables additional image format support when available.", + "ext-zlib": "Recommended for compressed streams and related features.", + "tecnickcom/tc-lib-pdf": "Modern replacement for TCPDF." + }, + "type": "library", + "autoload": { + "classmap": [ + "config", + "include", + "tcpdf.php", + "tcpdf_barcodes_1d.php", + "tcpdf_barcodes_2d.php", + "include/tcpdf_colors.php", + "include/tcpdf_filters.php", + "include/tcpdf_font_data.php", + "include/tcpdf_fonts.php", + "include/tcpdf_images.php", + "include/tcpdf_static.php", + "include/barcodes/datamatrix.php", + "include/barcodes/pdf417.php", + "include/barcodes/qrcode.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Nicola Asuni", + "email": "info@tecnick.com", + "role": "lead" + } + ], + "description": "Deprecated legacy PDF engine for PHP. Migrate to tecnickcom/tc-lib-pdf.", + "homepage": "https://tcpdf.org", + "keywords": [ + "PDFD32000-2008", + "TCPDF", + "barcodes", + "datamatrix", + "pdf", + "pdf417", + "qrcode" + ], + "support": { + "issues": "https://github.com/tecnickcom/TCPDF/issues", + "source": "https://github.com/tecnickcom/TCPDF" + }, + "funding": [ + { + "url": "https://github.com/sponsors/tecnickcom", + "type": "github" + } + ], + "time": "2026-08-28T11:28:19+00:00" + }, + { + "name": "theiconic/name-parser", + "version": "v1.2.11", + "source": { + "type": "git", + "url": "https://github.com/theiconic/name-parser.git", + "reference": "9a54a713bf5b2e7fd990828147d42de16bf8a253" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theiconic/name-parser/zipball/9a54a713bf5b2e7fd990828147d42de16bf8a253", + "reference": "9a54a713bf5b2e7fd990828147d42de16bf8a253", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "php-mock/php-mock-phpunit": "^2.1", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "TheIconic\\NameParser\\": [ + "src/", + "tests/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "The Iconic", + "email": "engineering@theiconic.com.au" + } + ], + "description": "PHP library for parsing a string containing a full name into its parts", + "support": { + "issues": "https://github.com/theiconic/name-parser/issues", + "source": "https://github.com/theiconic/name-parser/tree/v1.2.11" + }, + "time": "2019-11-14T14:08:48+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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/v2.4.0" + }, + "time": "2025-12-02T11:56:42+00:00" + }, + { + "name": "tpetry/laravel-query-expressions", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/tpetry/laravel-query-expressions.git", + "reference": "e9e6c7e7c570de6820b617868e8073a1fa71f461" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tpetry/laravel-query-expressions/zipball/e9e6c7e7c570de6820b617868e8073a1fa71f461", + "reference": "e9e6c7e7c570de6820b617868e8073a1fa71f461", + "shasum": "" + }, + "require": { + "laravel/framework": "^10.13.1|^11.0|^12.0|^13.0", + "php": "^8.1" + }, + "require-dev": { + "laravel/pint": "^1.0", + "orchestra/testbench": "^8.0|^9.0|^10.0|^11.0", + "pestphp/pest": "^2.28.1|^3.0.0", + "pestphp/pest-plugin-laravel": "^2.2.0|^3.0.0", + "phpstan/phpstan": "^1.11|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tpetry\\QueryExpressions\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "tpetry", + "email": "github@tpetry.me", + "role": "Developer" + } + ], + "description": "Database-independent Query Expressions as a replacement to DB::raw calls", + "homepage": "https://github.com/tpetry/laravel-query-expressions", + "keywords": [ + "database", + "expression", + "laravel", + "query" + ], + "support": { + "issues": "https://github.com/tpetry/laravel-query-expressions/issues", + "source": "https://github.com/tpetry/laravel-query-expressions/tree/1.6.0" + }, + "time": "2026-03-13T08:48:18+00:00" + }, + { + "name": "twig/twig", + "version": "v3.30.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "8c737079b726af72ff8ef3c595be9f6a810ea1ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/8c737079b726af72ff8ef3c595be9f6a810ea1ef", + "reference": "8c737079b726af72ff8ef3c595be9f6a810ea1ef", + "shasum": "" + }, + "require": { + "php": ">=8.1.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "php-cs-fixer/shim": "^3.0@stable", + "phpstan/phpstan": "^2.0@stable", + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/Resources/core.php", + "src/Resources/debug.php", + "src/Resources/escaper.php", + "src/Resources/string_loader.php" + ], + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.30.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2026-09-25T13:20:01+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/phpdotenv/phpdotenv.git", + "reference": "301c07936b16d88628b126b01d082ba153cf4c40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpdotenv/phpdotenv/zipball/301c07936b16d88628b126b01d082ba153cf4c40", + "reference": "301c07936b16d88628b126b01d082ba153cf4c40", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.10", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-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 `$_ENV` and `$_SERVER` automagically, and optionally to `getenv()`.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.7.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2026-08-24T18:07:49+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "8e1051fe39379367aecf014f41744ce7539a856f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/8e1051fe39379367aecf014f41744ce7539a856f", + "reference": "8e1051fe39379367aecf014f41744ce7539a856f", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpunit/phpunit": "~8.5 || ~9.6 || ~10.5 || ~11.5" + }, + "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": "https://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/2.1.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": "2026-04-26T05:33:54+00:00" + }, + { + "name": "web-auth/cose-lib", + "version": "4.8.2", + "source": { + "type": "git", + "url": "https://github.com/web-auth/cose-lib.git", + "reference": "8849e8bf043a2d42d0bec5bda5db2469ad376148" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/web-auth/cose-lib/zipball/8849e8bf043a2d42d0bec5bda5db2469ad376148", + "reference": "8849e8bf043a2d42d0bec5bda5db2469ad376148", + "shasum": "" + }, + "require": { + "brick/math": "^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14 || ^0.15 || ^0.16 || ^0.17 || ^0.18 || ^0.19 || ^0.20 || ^1.0", + "ext-json": "*", + "ext-openssl": "*", + "php": ">=8.1", + "spomky-labs/pki-framework": "^1.0" + }, + "conflict": { + "spomky-labs/cbor-php": "<3.4.0" + }, + "require-dev": { + "spomky-labs/cbor-php": "^3.4" + }, + "suggest": { + "ext-bcmath": "Recommended: without GMP or BCMath, signing with RSASSA-PSS (PS256/PS384/PS512) blinds its private exponentiation in pure PHP", + "ext-gmp": "Recommended: without GMP or BCMath, signing with RSASSA-PSS (PS256/PS384/PS512) blinds its private exponentiation in pure PHP", + "ext-sodium": "Required by the EdDSA/Ed25519 signature algorithms (-8, -19, -260, -261) and to recompute an OKP public key from its private key", + "spomky-labs/cbor-php": "Required by the RFC 9052 header reader and cryptographic structures. 3.4.0 or later: it ships the six COSE message classes (CBOR\\Tag\\CoseSign1Tag and its siblings) that replace the deprecated Cose\\...Tag classes, and its decoder is what enforces the RFC 9052 label uniqueness and nesting bounds this library relies on" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cose\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Florent Morselli", + "homepage": "https://github.com/Spomky" + }, + { + "name": "All contributors", + "homepage": "https://github.com/web-auth/cose/contributors" + } + ], + "description": "CBOR Object Signing and Encryption (COSE) For PHP", + "homepage": "https://github.com/web-auth", + "keywords": [ + "COSE", + "RFC8152" + ], + "support": { + "issues": "https://github.com/web-auth/cose-lib/issues", + "source": "https://github.com/web-auth/cose-lib/tree/4.8.2" + }, + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2026-09-15T17:30:33+00:00" + }, + { + "name": "web-auth/webauthn-lib", + "version": "5.3.9", + "source": { + "type": "git", + "url": "https://github.com/web-auth/webauthn-lib.git", + "reference": "727e378fb7a36c26be5c911e4a0120c146741ce7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/727e378fb7a36c26be5c911e4a0120c146741ce7", + "reference": "727e378fb7a36c26be5c911e4a0120c146741ce7", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "paragonie/constant_time_encoding": "^2.6|^3.0", + "php": ">=8.2", + "phpdocumentor/reflection-docblock": "^5.3|^6.0", + "psr/clock": "^1.0", + "psr/event-dispatcher": "^1.0", + "psr/log": "^1.0|^2.0|^3.0", + "spomky-labs/cbor-php": "^3.4", + "spomky-labs/pki-framework": "^1.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^3.2", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "web-auth/cose-lib": "^4.8" + }, + "suggest": { + "psr/log-implementation": "Recommended to receive logs from the library", + "symfony/event-dispatcher": "Recommended to use dispatched events", + "web-token/jwt-library": "Mandatory for fetching Metadata Statement from distant sources" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/web-auth/webauthn-framework", + "name": "web-auth/webauthn-framework" + } + }, + "autoload": { + "psr-4": { + "Webauthn\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Florent Morselli", + "homepage": "https://github.com/Spomky" + }, + { + "name": "All contributors", + "homepage": "https://github.com/web-auth/webauthn-library/contributors" + } + ], + "description": "FIDO2/Webauthn Support For PHP", + "homepage": "https://github.com/web-auth", + "keywords": [ + "FIDO2", + "fido", + "webauthn" + ], + "support": { + "source": "https://github.com/web-auth/webauthn-lib/tree/5.3.9" + }, + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2026-09-10T21:10:45+00:00" + }, + { + "name": "webmozart/assert", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "8a163706bbcac613733dba03f51e13b5eb1bb819" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/8a163706bbcac613733dba03f51e13b5eb1bb819", + "reference": "8a163706bbcac613733dba03f51e13b5eb1bb819", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", + "php": "^8.2" + }, + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" + }, + "type": "library", + "extra": { + "psalm": { + "pluginClass": "Webmozart\\Assert\\PsalmPlugin" + }, + "branch-alias": { + "dev-master": "2.0-dev", + "dev-feature/2-0": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@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/2.5.0" + }, + "time": "2026-10-05T23:14:19+00:00" + }, + { + "name": "webonyx/graphql-php", + "version": "v15.33.1", + "source": { + "type": "git", + "url": "https://github.com/webonyx/graphql-php.git", + "reference": "e0f40ce40a527ee27413cceced4825aacbc7de5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/e0f40ce40a527ee27413cceced4825aacbc7de5b", + "reference": "e0f40ce40a527ee27413cceced4825aacbc7de5b", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^7.4 || ^8" + }, + "require-dev": { + "amphp/amp": "^2.6 || ^3", + "amphp/http-server": "^2.1 || ^3", + "dms/phpunit-arraysubset-asserts": "dev-master", + "ergebnis/composer-normalize": "^2.28", + "friendsofphp/php-cs-fixer": "3.95.8", + "mll-lab/php-cs-fixer-config": "5.13.0", + "nyholm/psr7": "^1.5", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "2.2.2", + "phpstan/phpstan-phpunit": "2.0.16", + "phpstan/phpstan-strict-rules": "2.0.11", + "phpunit/phpunit": "^9.5 || ^10.5.21 || ^11", + "psr/http-message": "^1 || ^2", + "react/http": "^1.6", + "react/promise": "^2.0 || ^3.0", + "rector/rector": "^2.0", + "symfony/polyfill-php81": "^1.23", + "symfony/var-exporter": "^5 || ^6 || ^7 || ^8", + "thecodingmachine/safe": "^1.3 || ^2 || ^3", + "ticketswap/phpstan-error-formatter": "1.3.0" + }, + "suggest": { + "amphp/amp": "To leverage async resolving on AMPHP platform (v3 with AmpFutureAdapter, v2 with AmpPromiseAdapter)", + "amphp/http-server": "To leverage async resolving with webserver on AMPHP platform", + "psr/http-message": "To use standard GraphQL server", + "react/promise": "To leverage async resolving on React PHP platform" + }, + "type": "library", + "autoload": { + "psr-4": { + "GraphQL\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP port of GraphQL reference implementation", + "homepage": "https://github.com/webonyx/graphql-php", + "keywords": [ + "api", + "graphql" + ], + "support": { + "issues": "https://github.com/webonyx/graphql-php/issues", + "source": "https://github.com/webonyx/graphql-php/tree/v15.33.1" + }, + "funding": [ + { + "url": "https://github.com/spawnia", + "type": "github" + }, + { + "url": "https://opencollective.com/webonyx-graphql-php", + "type": "open_collective" + } + ], + "time": "2026-06-17T06:05:59+00:00" + }, + { + "name": "yiisoft/aliases", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/aliases.git", + "reference": "6f876dbf899f604fd3aefa3b3fd37e2ff2549ead" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/aliases/zipball/6f876dbf899f604fd3aefa3b3fd37e2ff2549ead", + "reference": "6f876dbf899f604fd3aefa3b3fd37e2ff2549ead", + "shasum": "" + }, + "require": { + "php": "8.1 - 8.5" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.3", + "maglnet/composer-require-checker": "^4.7.1", + "phpunit/phpunit": "^10.5.48", + "psr/container": "^2.0.2", + "rector/rector": "^2.1.2", + "spatie/phpunit-watcher": "^1.24.0", + "yiisoft/definitions": "^3.4", + "yiisoft/di": "^1.4", + "yiisoft/test-support": "^3.0.2" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + }, + "config-plugin": { + "di": "di.php", + "params": "params.php" + }, + "config-plugin-options": { + "source-directory": "config" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Aliases\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Named paths and URLs storage", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "alias" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/aliases/issues?state=open", + "source": "https://github.com/yiisoft/aliases", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-12-04T12:53:43+00:00" + }, + { + "name": "yiisoft/arrays", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/arrays.git", + "reference": "8efada90e4fd540b3da476779bc1b7bd9319b62f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/arrays/zipball/8efada90e4fd540b3da476779bc1b7bd9319b62f", + "reference": "8efada90e4fd540b3da476779bc1b7bd9319b62f", + "shasum": "" + }, + "require": { + "php": "8.1 - 8.5", + "yiisoft/strings": "^2.6" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpbench/phpbench": "^1.4.1", + "phpunit/phpunit": "^10.5.48", + "rector/rector": "^2.1.2", + "spatie/phpunit-watcher": "^1.24" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Arrays\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii Array Helper", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "array", + "helper", + "yii" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://forum.yiiframework.com/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/arrays/issues?state=open", + "source": "https://github.com/yiisoft/arrays", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-11-26T12:25:21+00:00" + }, + { + "name": "yiisoft/files", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/files.git", + "reference": "465650fd9e4295669f42ab7e9fec2386700540a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/files/zipball/465650fd9e4295669f42ab7e9fec2386700540a7", + "reference": "465650fd9e4295669f42ab7e9fec2386700540a7", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.5", + "yiisoft/strings": "^2.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.3", + "ext-zlib": "*", + "maglnet/composer-require-checker": "^4.4", + "phpunit/phpunit": "^9.6.22", + "rector/rector": "^2.0.10", + "spatie/phpunit-watcher": "^1.23.6" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Files\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Helper to manage files and directories", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "files" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/files/issues?state=open", + "source": "https://github.com/yiisoft/files", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-12-01T06:30:27+00:00" + }, + { + "name": "yiisoft/html", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/html.git", + "reference": "eeb0bea275c87c4ee0dbc444dbc24fbf44a5aa77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/html/zipball/eeb0bea275c87c4ee0dbc444dbc24fbf44a5aa77", + "reference": "eeb0bea275c87c4ee0dbc444dbc24fbf44a5aa77", + "shasum": "" + }, + "require": { + "php": "8.1 - 8.5", + "yiisoft/arrays": "^2.0 || ^3.0", + "yiisoft/json": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.90", + "infection/infection": "^0.27.11 || ^0.32", + "maglnet/composer-require-checker": "^4.7.1", + "phpunit/phpunit": "^10.5.46", + "rector/rector": "^2.0.17", + "spatie/phpunit-watcher": "^1.24", + "vimeo/psalm": "^5.26.1 || ^6.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "Yiisoft\\Html\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Handy library to generate HTML", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "html" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://forum.yiiframework.com/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/html/issues?state=open", + "source": "https://github.com/yiisoft/html", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2026-06-05T07:38:14+00:00" + }, + { + "name": "yiisoft/i18n", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/i18n.git", + "reference": "028fbcee0ea772dab150d0a8f40344a32e639d3f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/i18n/zipball/028fbcee0ea772dab150d0a8f40344a32e639d3f", + "reference": "028fbcee0ea772dab150d0a8f40344a32e639d3f", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.5" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.3", + "maglnet/composer-require-checker": "^4.4", + "phpunit/phpunit": "^9.6.22", + "rector/rector": "^2.0.10", + "spatie/phpunit-watcher": "^1.23.6" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\I18n\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii Internationalization Library", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "i18n", + "locale" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/i18n/issues?state=open", + "source": "https://github.com/yiisoft/i18n", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-11-29T15:57:19+00:00" + }, + { + "name": "yiisoft/json", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/json.git", + "reference": "6af88ed2c653f4b6cbe3ea9114e4aebc5a463c80" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/json/zipball/6af88ed2c653f4b6cbe3ea9114e4aebc5a463c80", + "reference": "6af88ed2c653f4b6cbe3ea9114e4aebc5a463c80", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-simplexml": "*", + "php": "~7.4.0 || 8.0 - 8.5" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "maglnet/composer-require-checker": "^3.8 || ^4.2", + "phpunit/phpunit": "^9.6.22", + "rector/rector": "^2.0.8", + "spatie/phpunit-watcher": "^1.23.6" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Json\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii JSON encoding and decoding", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "json" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/json/issues?state=open", + "source": "https://github.com/yiisoft/json", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-11-21T19:39:36+00:00" + }, + { + "name": "yiisoft/strings", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/strings.git", + "reference": "9bc7fea56374619cccd4587848029fe97f98bb33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/strings/zipball/9bc7fea56374619cccd4587848029fe97f98bb33", + "reference": "9bc7fea56374619cccd4587848029fe97f98bb33", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "8.1 - 8.5" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "maglnet/composer-require-checker": "^4.7.1", + "phpbench/phpbench": "^1.4.1", + "phpunit/phpunit": "^10.5.48", + "rector/rector": "^2.1.2", + "spatie/phpunit-watcher": "^1.24" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Strings\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii Strings Helper", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "helper", + "string", + "yii" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/strings/issues?state=open", + "source": "https://github.com/yiisoft/strings", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-11-23T18:00:58+00:00" + }, + { + "name": "yiisoft/translator", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/translator.git", + "reference": "62c64c9009a570597cc31dd42ff951d74049a60b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/translator/zipball/62c64c9009a570597cc31dd42ff951d74049a60b", + "reference": "62c64c9009a570597cc31dd42ff951d74049a60b", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.5", + "psr/event-dispatcher": "1.0.0", + "yiisoft/files": "^1.0 || ^2.0", + "yiisoft/i18n": "^1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.3", + "maglnet/composer-require-checker": "^4.4", + "phpunit/phpunit": "^9.6.29", + "rector/rector": "^2.1.7", + "spatie/phpunit-watcher": "^1.23.6", + "yiisoft/di": "^1.2.1" + }, + "suggest": { + "ext-intl": "Allows using intl message formatter", + "ext-tokenizer": "Allows using message extraction", + "yiisoft/event-dispatcher": "To listen for events about missing categories and messages" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + }, + "config-plugin": { + "di": "di.php", + "params": "params.php" + }, + "config-plugin-options": { + "source-directory": "config" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Translator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii Message Translator", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "i18n", + "internationalization", + "translation" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/translator/issues?state=open", + "source": "https://github.com/yiisoft/translator", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-12-06T05:18:44+00:00" + }, + { + "name": "yiisoft/translator-message-php", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/translator-message-php.git", + "reference": "ef597d4df3d991ba4d7e9feb98d818870e8c747a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/translator-message-php/zipball/ef597d4df3d991ba4d7e9feb98d818870e8c747a", + "reference": "ef597d4df3d991ba4d7e9feb98d818870e8c747a", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.5", + "yiisoft/translator": "1.0 - 3" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.3", + "maglnet/composer-require-checker": "^4.4", + "phpunit/phpunit": "^9.6.22", + "rector/rector": "^2.0.10", + "spatie/phpunit-watcher": "^1.23.6" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "tools" + } + }, + "autoload": { + "psr-4": { + "Yiisoft\\Translator\\Message\\Php\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Yii Translator PHP Message Storage", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "formatting", + "i18n", + "internationalization", + "message storage" + ], + "support": { + "chat": "https://t.me/yii3en", + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/translator-message-php/issues?state=open", + "source": "https://github.com/yiisoft/translator-message-php", + "wiki": "https://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "opencollective" + } + ], + "time": "2025-12-06T14:38:12+00:00" + } + ], + "packages-dev": [ + { + "name": "brianium/paratest", + "version": "v7.20.0", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "81c80677c9ec0ed4ef16b246167f11dec81a6e3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/81c80677c9ec0ed4ef16b246167f11dec81a6e3d", + "reference": "81c80677c9ec0ed4ef16b246167f11dec81a6e3d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^1.3.0", + "jean85/pretty-package-versions": "^2.1.1", + "php": "~8.3.0 || ~8.4.0 || ~8.5.0", + "phpunit/php-code-coverage": "^12.5.3 || ^13.0.1", + "phpunit/php-file-iterator": "^6.0.1 || ^7", + "phpunit/php-timer": "^8 || ^9", + "phpunit/phpunit": "^12.5.14 || ^13.0.5", + "sebastian/environment": "^8.0.3 || ^9", + "symfony/console": "^7.4.7 || ^8.0.7", + "symfony/process": "^7.4.5 || ^8.0.5" + }, + "require-dev": { + "doctrine/coding-standard": "^14.0.0", + "ext-pcntl": "*", + "ext-pcov": "*", + "ext-posix": "*", + "phpstan/phpstan": "^2.1.44", + "phpstan/phpstan-deprecation-rules": "^2.0.4", + "phpstan/phpstan-phpunit": "^2.0.16", + "phpstan/phpstan-strict-rules": "^2.0.10", + "symfony/filesystem": "^7.4.6 || ^8.0.6" + }, + "bin": [ + "bin/paratest", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.20.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2026-03-29T15:46:14+00:00" + }, + { + "name": "cebe/markdown", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/cebe/markdown.git", + "reference": "9bac5e971dd391e2802dca5400bbeacbaea9eb86" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cebe/markdown/zipball/9bac5e971dd391e2802dca5400bbeacbaea9eb86", + "reference": "9bac5e971dd391e2802dca5400bbeacbaea9eb86", + "shasum": "" + }, + "require": { + "lib-pcre": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "cebe/indent": "*", + "facebook/xhprof": "*@dev", + "phpunit/phpunit": "4.1.*" + }, + "bin": [ + "bin/markdown" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "cebe\\markdown\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Carsten Brandt", + "email": "mail@cebe.cc", + "homepage": "http://cebe.cc/", + "role": "Creator" + } + ], + "description": "A super fast, highly extensible markdown parser for PHP", + "homepage": "https://github.com/cebe/markdown#readme", + "keywords": [ + "extensible", + "fast", + "gfm", + "markdown", + "markdown-extra" + ], + "support": { + "issues": "https://github.com/cebe/markdown/issues", + "source": "https://github.com/cebe/markdown" + }, + "time": "2018-03-26T11:24:36+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", + "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", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + }, + "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": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" + }, + "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": "2024-05-06T16:37:16+00:00" + }, + { + "name": "craftcms/ecs", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://github.com/craftcms/ecs.git", + "reference": "3823f989668e12a85ba681f8c7f3fd8488e23066" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/ecs/zipball/3823f989668e12a85ba681f8c7f3fd8488e23066", + "reference": "3823f989668e12a85ba681f8c7f3fd8488e23066", + "shasum": "" + }, + "require": { + "php": "^7.2.5|^8.0.2", + "symplify/easy-coding-standard": "^10.3.3" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-4": { + "craft\\ecs\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "description": "Easy Coding Standard configurations for Craft CMS projects", + "support": { + "issues": "https://github.com/craftcms/ecs/issues", + "source": "https://github.com/craftcms/ecs/tree/main" + }, + "time": "2024-08-07T21:54:45+00:00" + }, + { + "name": "craftcms/yii2-adapter", + "version": "6.x-dev", + "source": { + "type": "git", + "url": "https://github.com/craftcms/yii2-adapter.git", + "reference": "a94de44c90e1e090db34092763b2992645278d79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/craftcms/yii2-adapter/zipball/a94de44c90e1e090db34092763b2992645278d79", + "reference": "a94de44c90e1e090db34092763b2992645278d79", + "shasum": "" + }, + "require": { + "craftcms/cms": "self.version", + "creocoder/yii2-nested-sets": "~0.9.0", + "ext-bcmath": "*", + "ext-curl": "*", + "ext-dom": "*", + "ext-intl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-pcre": "*", + "ext-pdo": "*", + "ext-zip": "*", + "mikehaertl/php-shellcommand": "^1.6.3", + "php": "^8.5", + "samdark/yii2-psr-log-target": "^1.1.3", + "seld/cli-prompt": "^1.0.4", + "thamtech/yii2-ratelimiter-advanced": "^0.5.0", + "voku/portable-ascii": "^2.0", + "yiisoft/yii2": "~2.0.55.0", + "yiisoft/yii2-debug": "~2.1.27.0", + "yiisoft/yii2-queue": "~2.3.2", + "yiisoft/yii2-symfonymailer": "^4.0.0" + }, + "provide": { + "bower-asset/inputmask": "5.0.9", + "bower-asset/jquery": "3.6.1", + "bower-asset/punycode": "^2.2", + "bower-asset/yii2-pjax": "~2.0.1", + "yii2tech/ar-softdelete": "1.0.4" + }, + "require-dev": { + "codeception/codeception": "^5.2.0", + "codeception/lib-innerbrowser": "4.0.6", + "codeception/module-asserts": "^3.0.0", + "codeception/module-datafactory": "^3.0.0", + "codeception/module-phpbrowser": "^3.0.0", + "codeception/module-rest": "^3.3.2", + "codeception/module-yii2": "^1.1.9", + "craftcms/ecs": "dev-main", + "dg/bypass-finals": "^1.9", + "larastan/larastan": "^3.12", + "laravel/socialite": "^5.25", + "league/factory-muffin": "^3.3.0", + "orchestra/testbench": "^11.0", + "pestphp/pest": "^4.0", + "phpstan/phpstan": "^2.1", + "rector/rector": "^2.0", + "vlucas/phpdotenv": "^5.4.1", + "yiisoft/yii2-redis": "^2.0" + }, + "default-branch": true, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "CraftCms\\Yii2Adapter\\Yii2ServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Helpers/Queries.php" + ], + "psr-4": { + "craft\\": "legacy/", + "CraftCms\\Cms\\": "constants/", + "CraftCms\\Yii2Adapter\\": "src/", + "yii2tech\\ar\\softdelete\\": "lib/ar-softdelete/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "proprietary" ], "authors": [ { @@ -9293,207 +12334,1146 @@ "homepage": "https://pixelandtonic.com/" } ], - "description": "Edit rich text content in Craft CMS using CKEditor.", + "description": "Craft CMS Yii2 adapter", + "homepage": "https://craftcms.com", + "keywords": [ + "cms", + "craftcms", + "yii2" + ], + "support": { + "docs": "https://craftcms.com/docs/5.x/", + "email": "support@craftcms.com", + "forum": "https://craftcms.stackexchange.com/", + "issues": "https://github.com/craftcms/cms/issues?state=open", + "rss": "https://github.com/craftcms/cms/releases.atom", + "source": "https://github.com/craftcms/cms" + }, + "time": "2026-10-09T10:39:54+00:00" + }, + { + "name": "creocoder/yii2-nested-sets", + "version": "0.9.0", + "source": { + "type": "git", + "url": "https://github.com/creocoder/yii2-nested-sets.git", + "reference": "cb8635a459b6246e5a144f096b992dcc30cf9954" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/creocoder/yii2-nested-sets/zipball/cb8635a459b6246e5a144f096b992dcc30cf9954", + "reference": "cb8635a459b6246e5a144f096b992dcc30cf9954", + "shasum": "" + }, + "require": { + "yiisoft/yii2": "*" + }, + "type": "yii2-extension", + "autoload": { + "psr-4": { + "creocoder\\nestedsets\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Alexander Kochetov", + "email": "creocoder@gmail.com" + } + ], + "description": "The nested sets behavior for the Yii framework", + "keywords": [ + "nested sets", + "yii2" + ], + "support": { + "issues": "https://github.com/creocoder/yii2-nested-sets/issues", + "source": "https://github.com/creocoder/yii2-nested-sets/tree/master" + }, + "time": "2015-01-27T10:53:51+00:00" + }, + { + "name": "dg/bypass-finals", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/dg/bypass-finals.git", + "reference": "b21595bdd1937e9ac912d68380dc85a65d77285f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dg/bypass-finals/zipball/b21595bdd1937e9ac912d68380dc85a65d77285f", + "reference": "b21595bdd1937e9ac912d68380dc85a65d77285f", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.2" + }, + "type": "library", + "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" + } + ], + "description": "Removes final keyword from source code on-the-fly and allows mocking of final methods and classes", + "keywords": [ + "finals", + "mocking", + "phpunit", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/dg/bypass-finals/issues", + "source": "https://github.com/dg/bypass-finals/tree/v1.11.0" + }, + "time": "2026-07-24T12:24:07+00:00" + }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.19.1", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "5e0539132d934f936fbae2c88b55d58f9438623f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/5e0539132d934f936fbae2c88b55d58f9438623f", + "reference": "5e0539132d934f936fbae2c88b55d58f9438623f", + "shasum": "" + }, + "require": { + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" + }, + "require-dev": { + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.1" + }, + "time": "2026-09-15T15:42:51+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.24.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "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" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" + }, + "time": "2024-11-21T13:46:39+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "d384a7d0d6e67aa497327260ca95023e92dc2032" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/d384a7d0d6e67aa497327260ca95023e92dc2032", + "reference": "d384a7d0d6e67aa497327260ca95023e92dc2032", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0 || ^1.1.2", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "symfony/polyfill-mbstring": "^1.33", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.4.1" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2026-09-29T22:11:39+00:00" + }, + { + "name": "filp/whoops", + "version": "2.18.6", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "7d0a2cde892089bb09372f4366e9b960eb3001a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/7d0a2cde892089bb09372f4366e9b960eb3001a9", + "reference": "7d0a2cde892089bb09372f4366e9b960eb3001a9", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3 || ^10.5.58", + "symfony/var-dumper": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.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.18.6" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2026-10-03T17:03:57+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b61cd040da1a4925bc90a51c074f5297e7c0fa52", + "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "php": "^7.4|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-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/v3.0.0" + }, + "time": "2026-03-17T11:56:53+00:00" + }, + { + "name": "iamcal/sql-parser", + "version": "v0.7", + "source": { + "type": "git", + "url": "https://github.com/iamcal/SQLParser.git", + "reference": "610392f38de49a44dab08dc1659960a29874c4b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/610392f38de49a44dab08dc1659960a29874c4b8", + "reference": "610392f38de49a44dab08dc1659960a29874c4b8", + "shasum": "" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^1.0", + "phpunit/phpunit": "^5|^6|^7|^8|^9" + }, + "type": "library", + "autoload": { + "psr-4": { + "iamcal\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cal Henderson", + "email": "cal@iamcal.com" + } + ], + "description": "MySQL schema parser", + "support": { + "issues": "https://github.com/iamcal/SQLParser/issues", + "source": "https://github.com/iamcal/SQLParser/tree/v0.7" + }, + "time": "2026-01-28T22:20:33+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "rector/rector": "^2.0", + "vimeo/psalm": "^4.3 || ^5.0" + }, + "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.1.1" + }, + "time": "2025-03-19T14:43:43+00:00" + }, + { + "name": "larastan/larastan", + "version": "v3.13.0", + "source": { + "type": "git", + "url": "https://github.com/larastan/larastan.git", + "reference": "24ee69a7705ffc7c2cd8a3c96a5f498a4c2de5e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/larastan/larastan/zipball/24ee69a7705ffc7c2cd8a3c96a5f498a4c2de5e3", + "reference": "24ee69a7705ffc7c2cd8a3c96a5f498a4c2de5e3", + "shasum": "" + }, + "require": { + "iamcal/sql-parser": "^0.7.0", + "illuminate/console": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/container": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/contracts": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/database": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/http": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/pipeline": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/support": "^11.44.2 || ^12.4.1 || ^13", + "php": "^8.2", + "phpstan/phpstan": "^2.3.0" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "laravel/framework": "^11.44.2 || ^12.7.2 || ^13", + "mockery/mockery": "^1.6.12", + "nikic/php-parser": "^5.4", + "orchestra/canvas": "^v9.2.2 || ^10.0.1 || ^11", + "orchestra/testbench-core": "^9.12.0 || ^10.1 || ^11", + "phpstan/phpstan-deprecation-rules": "^2.0.1", + "phpunit/phpunit": "^10.5.35 || ^11.5.15 || ^12.5.8 || ^13.3.0" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench", + "phpmyadmin/sql-parser": "Install to enable Larastan's optional phpMyAdmin-based SQL parser automatically" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Larastan\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Can Vural", + "email": "can9119@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/larastan/larastan/issues", + "source": "https://github.com/larastan/larastan/tree/v3.13.0" + }, + "funding": [ + { + "url": "https://github.com/canvural", + "type": "github" + } + ], + "time": "2026-10-07T14:14:28+00:00" + }, + { + "name": "laravel/pail", + "version": "v1.2.7", + "source": { + "type": "git", + "url": "https://github.com/laravel/pail.git", + "reference": "2f7d27dada8effc48b8c424445a69cca7007daaa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pail/zipball/2f7d27dada8effc48b8c424445a69cca7007daaa", + "reference": "2f7d27dada8effc48b8c424445a69cca7007daaa", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/console": "^10.24|^11.0|^12.0|^13.0", + "illuminate/contracts": "^10.24|^11.0|^12.0|^13.0", + "illuminate/log": "^10.24|^11.0|^12.0|^13.0", + "illuminate/process": "^10.24|^11.0|^12.0|^13.0", + "illuminate/support": "^10.24|^11.0|^12.0|^13.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0|^8.0" + }, + "require-dev": { + "laravel/framework": "^10.24|^11.0|^12.0|^13.0", + "laravel/pint": "^1.13", + "orchestra/testbench-core": "^8.13|^9.17|^10.8|^11.0", + "pestphp/pest": "^2.20|^3.0|^4.0", + "pestphp/pest-plugin-type-coverage": "^2.3|^3.0|^4.0", + "phpstan/phpstan": "^1.12.27", + "symfony/var-dumper": "^6.3|^7.0|^8.0", + "symfony/yaml": "^6.3|^7.0|^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Pail\\PailServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Pail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Easily delve into your Laravel application's log files directly from the command line.", + "homepage": "https://github.com/laravel/pail", + "keywords": [ + "dev", + "laravel", + "logs", + "php", + "tail" + ], + "support": { + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" + }, + "time": "2026-05-20T22:24:57+00:00" + }, + { + "name": "laravel/tinker", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "4faba77764bd33411735936acdf30446d058c78b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/4faba77764bd33411735936acdf30446d058c78b", + "reference": "4faba77764bd33411735936acdf30446d058c78b", + "shasum": "" + }, + "require": { + "illuminate/console": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "php": "^8.1", + "psy/psysh": "^0.12.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0|^8.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5|^11.5" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^8.0|^9.0|^10.0|^11.0|^12.0|^13.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "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/v3.0.2" + }, + "time": "2026-03-17T14:54:13+00:00" + }, + { + "name": "league/factory-muffin", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/factory-muffin.git", + "reference": "62c8c31d47667523da14e83df36cc897d34173cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/factory-muffin/zipball/62c8c31d47667523da14e83df36cc897d34173cd", + "reference": "62c8c31d47667523da14e83df36cc897d34173cd", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "replace": { + "zizaco/factory-muff": "self.version" + }, + "require-dev": { + "doctrine/orm": "^2.5", + "illuminate/database": "5.0.* || 5.1.* || 5.5.* || ^6.0", + "league/factory-muffin-faker": "^2.3", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20" + }, + "suggest": { + "doctrine/orm": "Factory Muffin supports doctrine through the repository store.", + "illuminate/database": "Factory Muffin supports eloquent through the model store.", + "league/factory-muffin-faker": "Factory Muffin is very powerful together with faker." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "League\\FactoryMuffin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + }, + { + "name": "Scott Robertson", + "email": "scottymeuk@gmail.com" + } + ], + "description": "The goal of this package is to enable the rapid creation of objects for the purpose of testing.", + "homepage": "http://factory-muffin.thephpleague.com/", "keywords": [ - "CKEditor", - "cms", - "craftcms", - "html", - "yii2" + "factory", + "testing" ], "support": { - "docs": "https://github.com/craftcms/ckeditor/blob/master/README.md", - "email": "support@craftcms.com", - "issues": "https://github.com/craftcms/ckeditor/issues?state=open", - "rss": "https://github.com/craftcms/ckeditor/commits/master.atom", - "source": "https://github.com/craftcms/ckeditor" + "issues": "https://github.com/thephpleague/factory-muffin/issues", + "source": "https://github.com/thephpleague/factory-muffin/tree/v3.3.0" }, - "time": "2026-03-30T19:13:59+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/factory-muffin", + "type": "tidelift" + } + ], + "time": "2020-12-13T18:38:47+00:00" }, { - "name": "craftcms/ecs", - "version": "dev-main", + "name": "mikehaertl/php-shellcommand", + "version": "1.7.0", "source": { "type": "git", - "url": "https://github.com/craftcms/ecs.git", - "reference": "3823f989668e12a85ba681f8c7f3fd8488e23066" + "url": "https://github.com/mikehaertl/php-shellcommand.git", + "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/ecs/zipball/3823f989668e12a85ba681f8c7f3fd8488e23066", - "reference": "3823f989668e12a85ba681f8c7f3fd8488e23066", + "url": "https://api.github.com/repos/mikehaertl/php-shellcommand/zipball/e79ea528be155ffdec6f3bf1a4a46307bb49e545", + "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545", "shasum": "" }, "require": { - "php": "^7.2.5|^8.0.2", - "symplify/easy-coding-standard": "^10.3.3" + "php": ">= 5.3.0" + }, + "require-dev": { + "phpunit/phpunit": ">4.0 <=9.4" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { - "craft\\ecs\\": "src" + "mikehaertl\\shellcommand\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "description": "Easy Coding Standard configurations for Craft CMS projects", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Härtl", + "email": "haertl.mike@gmail.com" + } + ], + "description": "An object oriented interface to shell commands", + "keywords": [ + "shell" + ], "support": { - "issues": "https://github.com/craftcms/ecs/issues", - "source": "https://github.com/craftcms/ecs/tree/main" + "issues": "https://github.com/mikehaertl/php-shellcommand/issues", + "source": "https://github.com/mikehaertl/php-shellcommand/tree/1.7.0" }, - "time": "2024-08-07T21:54:45+00:00" + "time": "2023-04-19T08:25:22+00:00" }, { - "name": "craftcms/html-field", - "version": "3.5.1", + "name": "mockery/mockery", + "version": "1.6.15", "source": { "type": "git", - "url": "https://github.com/craftcms/html-field.git", - "reference": "b4e1ae3f020d6081cfe3abf653f663da744c4cec" + "url": "https://github.com/mockery/mockery.git", + "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/html-field/zipball/b4e1ae3f020d6081cfe3abf653f663da744c4cec", - "reference": "b4e1ae3f020d6081cfe3abf653f663da744c4cec", + "url": "https://api.github.com/repos/mockery/mockery/zipball/967a801bd188989a5669bd280f252d51c0fdc9ee", + "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee", "shasum": "" }, "require": { - "craftcms/cms": "^5.5.0", - "league/html-to-markdown": "^5.1", - "php": "^8.2", - "symfony/css-selector": "^6.0|^7.0", - "symfony/dom-crawler": "^6.0|^7.0" + "hamcrest/hamcrest-php": "^2.0 || ^3.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" }, "require-dev": { - "craftcms/ecs": "dev-main", - "craftcms/phpstan": "dev-main", - "craftcms/rector": "dev-main" + "phpunit/phpunit": "^9.6.36", + "symplify/easy-coding-standard": "^13.2.17" }, "type": "library", "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], "psr-4": { - "craft\\htmlfield\\": "src/" + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Pixel & Tonic", - "homepage": "https://pixelandtonic.com/" + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], - "description": "Base class for Craft CMS field types with HTML values.", + "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": { - "docs": "https://github.com/craftcms/html-field/blob/main/README.md", - "email": "support@craftcms.com", - "issues": "https://github.com/craftcms/html-field/issues?state=open", - "rss": "https://github.com/craftcms/html-field/commits/main.atom", - "source": "https://github.com/craftcms/html-field" + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2026-03-19T18:11:31+00:00" + "time": "2026-08-19T19:37:52+00:00" }, { - "name": "craftcms/phpstan", - "version": "dev-main", + "name": "myclabs/deep-copy", + "version": "1.14.0", "source": { "type": "git", - "url": "https://github.com/craftcms/phpstan.git", - "reference": "b61bba102b5ec8599406e6e29a28a20c915a6abc" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/phpstan/zipball/b61bba102b5ec8599406e6e29a28a20c915a6abc", - "reference": "b61bba102b5ec8599406e6e29a28a20c915a6abc", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae", + "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae", "shasum": "" }, "require": { - "phpstan/phpstan": "^1.4.6" + "php": "^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", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, - "default-branch": true, "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, "notification-url": "https://packagist.org/downloads/", - "description": "PHPStan configuration for Craft CMS projects", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], "support": { - "issues": "https://github.com/craftcms/phpstan/issues", - "source": "https://github.com/craftcms/phpstan/tree/main" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.14.0" }, - "time": "2022-04-12T20:50:18+00:00" + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + } + ], + "time": "2026-08-11T10:17:44+00:00" }, { - "name": "craftcms/rector", - "version": "dev-main", + "name": "nikic/php-parser", + "version": "v5.9.0", "source": { "type": "git", - "url": "https://github.com/craftcms/rector.git", - "reference": "fab0a0ed308aa6cf59968a526f5db635103e5de1" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/rector/zipball/fab0a0ed308aa6cf59968a526f5db635103e5de1", - "reference": "fab0a0ed308aa6cf59968a526f5db635103e5de1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9e33da9553fe7786f0962b35f4e4ecf01be89def", + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def", "shasum": "" }, "require": { - "rector/rector": "^1.0.0" + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" }, "require-dev": { - "craftcms/cms": "^4.0.0|^5.0.0", - "craftcms/ecs": "dev-main", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.0", - "symfony/var-exporter": "^6.0" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" }, - "default-branch": true, + "bin": [ + "bin/php-parse" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, "autoload": { "psr-4": { - "craft\\rector\\": "src" + "PhpParser\\": "lib/PhpParser" } }, "notification-url": "https://packagist.org/downloads/", - "description": "Rector sets to automate Craft CMS upgrades", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], "support": { - "issues": "https://github.com/craftcms/rector/issues", - "source": "https://github.com/craftcms/rector/tree/main" + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.9.0" }, - "time": "2024-05-17T09:09:56+00:00" + "time": "2026-09-13T18:51:52+00:00" }, { - "name": "craftcms/redactor", - "version": "4.2.0", + "name": "nunomaduro/collision", + "version": "v8.9.5", "source": { "type": "git", - "url": "https://github.com/craftcms/redactor.git", - "reference": "47bc7bc40312b7d02ef5bf4fd36bd2fd62f8043c" + "url": "https://github.com/nunomaduro/collision.git", + "reference": "fb53eacd509a1d303858e2d20cfebf2d630254ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/redactor/zipball/47bc7bc40312b7d02ef5bf4fd36bd2fd62f8043c", - "reference": "47bc7bc40312b7d02ef5bf4fd36bd2fd62f8043c", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/fb53eacd509a1d303858e2d20cfebf2d630254ec", + "reference": "fb53eacd509a1d303858e2d20cfebf2d630254ec", "shasum": "" }, "require": { - "craftcms/cms": "^5.3.0", - "craftcms/html-field": "^3.0.0", - "php": "^8.2" + "filp/whoops": "^2.18.4", + "nunomaduro/termwind": "^2.4.0", + "php": "^8.2.0", + "symfony/console": "^7.4.14 || ^8.1.1" + }, + "conflict": { + "laravel/framework": "<11.48.0 || >=14.0.0", + "phpunit/phpunit": "<11.5.50 || >=14.0.0" }, "require-dev": { - "craftcms/ecs": "dev-main", - "craftcms/phpstan": "dev-main", - "craftcms/rector": "dev-main" + "brianium/paratest": "^7.8.5", + "larastan/larastan": "^3.10.0", + "laravel/framework": "^11.48.0 || ^12.56.0 || ^13.20.0", + "laravel/pint": "^1.29.3", + "orchestra/testbench-core": "^9.12.0 || ^10.12.1 || ^11.3.5", + "pestphp/pest": "^3.8.5 || ^4.7.5 || ^5.0.0", + "sebastian/environment": "^7.2.1 || ^8.1.2 || ^9.3.2" }, - "type": "craft-plugin", + "type": "library", "extra": { - "name": "Redactor", - "handle": "redactor", - "documentationUrl": "https://github.com/craftcms/redactor/blob/v2/README.md" + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" + } }, "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], "psr-4": { - "craft\\redactor\\": "src/" + "NunoMaduro\\Collision\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9502,75 +13482,158 @@ ], "authors": [ { - "name": "Pixel & Tonic", - "homepage": "https://pixelandtonic.com/" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "Edit rich text content in Craft CMS using Redactor by Imperavi.", + "description": "Cli error handling for console/command-line PHP applications.", "keywords": [ - "Redactor", - "cms", - "craftcms", - "html", - "yii2" + "artisan", + "cli", + "command-line", + "console", + "dev", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" ], "support": { - "docs": "https://github.com/craftcms/redactor/blob/v2/README.md", - "email": "support@craftcms.com", - "issues": "https://github.com/craftcms/redactor/issues?state=open", - "rss": "https://github.com/craftcms/redactor/commits/v2.atom", - "source": "https://github.com/craftcms/redactor" + "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": "2026-07-15T19:09:14+00:00" + }, + { + "name": "orchestra/canvas", + "version": "v11.1.0", + "source": { + "type": "git", + "url": "https://github.com/orchestral/canvas.git", + "reference": "d13e6ec66cb1a285fcc7f092c804abaaf2e24ede" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/canvas/zipball/d13e6ec66cb1a285fcc7f092c804abaaf2e24ede", + "reference": "d13e6ec66cb1a285fcc7f092c804abaaf2e24ede", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "composer/semver": "^3.0", + "illuminate/console": "^13.23.0", + "illuminate/database": "^13.23.0", + "illuminate/filesystem": "^13.23.0", + "illuminate/support": "^13.23.0", + "orchestra/canvas-core": "^11.0.0", + "orchestra/sidekick": "~1.1.23|~1.2.20", + "orchestra/testbench-core": "^11.0.0", + "php": "^8.3", + "symfony/yaml": "^7.4.0|^8.0.0" + }, + "require-dev": { + "laravel/doctor": "^0.1.0", + "laravel/framework": "^13.23.0", + "laravel/pint": "^1.24", + "mockery/mockery": "^1.6.10", + "phpstan/phpstan": "^2.1.14", + "phpunit/phpunit": "^11.5.50|^12.5.8|^13.0.0" + }, + "bin": [ + "canvas" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Orchestra\\Canvas\\LaravelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Orchestra\\Canvas\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" + } + ], + "description": "Code Generators for Laravel Applications and Packages", + "support": { + "issues": "https://github.com/orchestral/canvas/issues", + "source": "https://github.com/orchestral/canvas/tree/v11.1.0" }, - "abandoned": "craftcms/ckeditor", - "time": "2024-09-03T13:38:27+00:00" + "time": "2026-08-04T15:06:43+00:00" }, { - "name": "embed/embed", - "version": "v4.4.19", + "name": "orchestra/canvas-core", + "version": "v11.0.0", "source": { "type": "git", - "url": "https://github.com/php-embed/Embed.git", - "reference": "c45a9007285524350499f3fa70e7e2f0967af470" + "url": "https://github.com/orchestral/canvas-core.git", + "reference": "88d091ff989748e2ca447bca0cd06ab14671ba82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-embed/Embed/zipball/c45a9007285524350499f3fa70e7e2f0967af470", - "reference": "c45a9007285524350499f3fa70e7e2f0967af470", + "url": "https://api.github.com/repos/orchestral/canvas-core/zipball/88d091ff989748e2ca447bca0cd06ab14671ba82", + "reference": "88d091ff989748e2ca447bca0cd06ab14671ba82", "shasum": "" }, "require": { - "composer/ca-bundle": "^1.0", - "ext-curl": "*", - "ext-dom": "*", - "ext-json": "*", - "ext-mbstring": "*", - "ml/json-ld": "^1.1", - "oscarotero/html-parser": "^0.1.4", - "php": "^7.4|^8", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0|^2.0" + "composer-runtime-api": "^2.2", + "composer/semver": "^3.0", + "illuminate/console": "^13.0", + "illuminate/support": "^13.0", + "orchestra/sidekick": "~1.1.23|~1.2.20", + "php": "^8.3" }, "require-dev": { - "brick/varexporter": "^0.3.1", - "friendsofphp/php-cs-fixer": "^2.0", - "nyholm/psr7": "^1.2", - "oscarotero/php-cs-fixer-config": "^1.0", - "phpstan/phpstan": "^2.1", - "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^9.0", - "symfony/css-selector": "^5.0" + "laravel/framework": "^13.0", + "laravel/pint": "^1.24", + "mockery/mockery": "^1.6.10", + "orchestra/testbench-core": "^11.0", + "phpstan/phpstan": "^2.1.17", + "phpunit/phpunit": "^11.5.50|^12.5.8|^13.0.0", + "symfony/yaml": "^7.4|^8.0" }, - "suggest": { - "symfony/css-selector": "If you want to get elements using css selectors" + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Orchestra\\Canvas\\Core\\LaravelServiceProvider" + ] + } }, - "type": "library", "autoload": { - "files": [ - "src/functions.php" - ], "psr-4": { - "Embed\\": "src" + "Orchestra\\Canvas\\Core\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9579,82 +13642,61 @@ ], "authors": [ { - "name": "Oscar Otero", - "email": "oom@oscarotero.com", - "homepage": "http://oscarotero.com", - "role": "Developer" - } - ], - "description": "PHP library to retrieve page info using oembed, opengraph, etc", - "homepage": "https://github.com/oscarotero/Embed", - "keywords": [ - "embed", - "embedly", - "oembed", - "opengraph", - "twitter cards" - ], - "support": { - "email": "oom@oscarotero.com", - "issues": "https://github.com/oscarotero/Embed/issues", - "source": "https://github.com/php-embed/Embed/tree/v4.4.19" - }, - "funding": [ - { - "url": "https://paypal.me/oscarotero", - "type": "custom" - }, - { - "url": "https://github.com/oscarotero", - "type": "github" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" }, { - "url": "https://www.patreon.com/misteroom", - "type": "patreon" + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" } ], - "time": "2026-07-08T19:24:10+00:00" + "description": "Code Generators Builder for Laravel Applications and Packages", + "support": { + "issues": "https://github.com/orchestral/canvas/issues", + "source": "https://github.com/orchestral/canvas-core/tree/v11.0.0" + }, + "time": "2026-03-16T15:10:50+00:00" }, { - "name": "fakerphp/faker", - "version": "v1.24.1", + "name": "orchestra/sidekick", + "version": "v1.2.23", "source": { "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" + "url": "https://github.com/orchestral/sidekick.git", + "reference": "cbdfe583afc069be2ca6790489e9dda007d14d00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "url": "https://api.github.com/repos/orchestral/sidekick/zipball/cbdfe583afc069be2ca6790489e9dda007d14d00", + "reference": "cbdfe583afc069be2ca6790489e9dda007d14d00", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "conflict": { - "fzaninotto/faker": "*" + "composer-runtime-api": "^2.2", + "composer/semver": "^3.0", + "php": "^8.1", + "symfony/polyfill-php83": "^1.32" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", - "ext-intl": "*", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." + "fakerphp/faker": "^1.21", + "laravel/framework": "^10.48.29|^11.44.7|^12.1.1|^13.0", + "laravel/pint": "^1.4", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^8.37.0|^9.14.0|^10.2.0|^11.0", + "phpstan/phpstan": "2.2.14", + "phpunit/phpunit": "^10.0|^11.0|^12.0|^13.0", + "symfony/process": "^6.0|^7.0|^8.0" }, "type": "library", "autoload": { + "files": [ + "src/Eloquent/functions.php", + "src/Filesystem/functions.php", + "src/Http/functions.php", + "src/functions.php" + ], "psr-4": { - "Faker\\": "src/Faker/" + "Orchestra\\Sidekick\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9663,122 +13705,136 @@ ], "authors": [ { - "name": "François Zaninotto" + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" } ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], + "description": "Packages Toolkit Utilities and Helpers for Laravel", "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" + "issues": "https://github.com/orchestral/sidekick/issues", + "source": "https://github.com/orchestral/sidekick/tree/v1.2.23" }, - "time": "2024-11-21T13:46:39+00:00" + "time": "2026-09-29T13:27:26+00:00" }, { - "name": "graham-campbell/result-type", - "version": "v1.1.4", + "name": "orchestra/testbench", + "version": "v11.3.0", "source": { "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" + "url": "https://github.com/orchestral/testbench.git", + "reference": "7081895e5bbbdf2fd333fdf34e8ddec6cd4db713" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", - "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/7081895e5bbbdf2fd333fdf34e8ddec6cd4db713", + "reference": "7081895e5bbbdf2fd333fdf34e8ddec6cd4db713", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.5" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" + "composer-runtime-api": "^2.2", + "fakerphp/faker": "^1.23", + "laravel/framework": "^13.32.0", + "mockery/mockery": "^1.6.10", + "orchestra/testbench-core": "^11.5.0", + "orchestra/workbench": "^11.3.0", + "php": "^8.3", + "phpunit/phpunit": "^11.5.50|^12.5.8|^13.0.0", + "symfony/process": "^7.4.5|^8.0.5", + "symfony/yaml": "^7.4|^8.0", + "vlucas/phpdotenv": "^5.6.1" }, "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" + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" } ], - "description": "An Implementation Of The Result Type", + "description": "Laravel Testing Helper for Packages Development", + "homepage": "https://packages.tools/testbench/", "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Result Type", - "Result-Type", - "result" + "BDD", + "TDD", + "dev", + "laravel", + "laravel-packages", + "testing" ], "support": { - "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench/tree/v11.3.0" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2025-12-27T19:43:20+00:00" + "time": "2026-09-24T07:19:57+00:00" }, { - "name": "justinrainbow/json-schema", - "version": "6.10.0", + "name": "orchestra/testbench-core", + "version": "v11.6.0", "source": { "type": "git", - "url": "https://github.com/jsonrainbow/json-schema.git", - "reference": "8b1308a9d7bdbdb20ce87ef920f82b4564bb2d33" + "url": "https://github.com/orchestral/testbench-core.git", + "reference": "f139a4ee74638dc24e0b6f657b47226c8ba5ab05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/8b1308a9d7bdbdb20ce87ef920f82b4564bb2d33", - "reference": "8b1308a9d7bdbdb20ce87ef920f82b4564bb2d33", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/f139a4ee74638dc24e0b6f657b47226c8ba5ab05", + "reference": "f139a4ee74638dc24e0b6f657b47226c8ba5ab05", "shasum": "" }, "require": { - "ext-json": "*", - "marc-mabe/php-enum": "^4.4", - "php": "^7.2 || ^8.0" + "composer-runtime-api": "^2.2", + "orchestra/sidekick": "~1.1.25|~1.2.22", + "php": "^8.3", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-php84": "^1.34.0" + }, + "conflict": { + "brianium/paratest": "<7.3.0|>=8.0.0", + "laravel/framework": "<13.35.0|>=14.0.0", + "laravel/serializable-closure": ">=2.0.0 <2.0.10|>=3.0.0", + "nunomaduro/collision": "<8.9.0|>=9.0.0", + "phpunit/phpunit": "<11.5.50|>=12.0.0 <12.5.8|>=13.5.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "3.3.0", - "json-schema/json-schema-test-suite": "dev-main", - "marc-mabe/php-enum-phpstan": "^2.0", - "phpspec/prophecy": "^1.19", - "phpstan/phpstan": "^1.12", - "phpunit/phpunit": "^8.5" + "fakerphp/faker": "^1.24", + "laravel/framework": "^13.35.0", + "laravel/pint": "^1.24", + "laravel/serializable-closure": "^2.0.10", + "mockery/mockery": "^1.6.10", + "phpstan/phpstan": "2.2.16", + "phpunit/phpunit": "^11.5.50|^12.5.8|^13.0.0", + "spatie/laravel-ray": "^1.43.6", + "symfony/process": "^7.4.5|^8.0.5", + "symfony/yaml": "^7.4.0|^8.0.0", + "vlucas/phpdotenv": "^5.6.1" + }, + "suggest": { + "brianium/paratest": "Allow using parallel testing (^7.3).", + "ext-pcntl": "Required to use all features of the console signal trapping.", + "fakerphp/faker": "Allow using Faker for testing (^1.23).", + "laravel/framework": "Required for testing (^13.35.0).", + "mockery/mockery": "Allow using Mockery for testing (^1.6).", + "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^8.9).", + "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^11.0).", + "phpunit/phpunit": "Allow using PHPUnit for testing (^11.5.50|^12.5.8|^13.0.0).", + "symfony/process": "Required to use Orchestra\\Testbench\\remote function (^7.4|^8.0).", + "symfony/yaml": "Required for Testbench CLI (^7.4|^8.0).", + "vlucas/phpdotenv": "Required for Testbench CLI (^5.6.1)." }, "bin": [ - "bin/validate-json" + "testbench" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.x-dev" - } - }, "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "JsonSchema\\": "src/JsonSchema/" + "Orchestra\\Testbench\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9787,74 +13843,69 @@ ], "authors": [ { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" } ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/jsonrainbow/json-schema", + "description": "Testing Helper for Laravel Development", + "homepage": "https://packages.tools/testbench", "keywords": [ - "json", - "schema" + "BDD", + "TDD", + "dev", + "laravel", + "laravel-packages", + "testing" ], "support": { - "issues": "https://github.com/jsonrainbow/json-schema/issues", - "source": "https://github.com/jsonrainbow/json-schema/tree/6.10.0" + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench-core" }, - "time": "2026-06-16T20:50:26+00:00" + "time": "2026-10-07T23:31:28+00:00" }, { - "name": "league/factory-muffin", - "version": "v3.3.0", + "name": "orchestra/workbench", + "version": "v11.3.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/factory-muffin.git", - "reference": "62c8c31d47667523da14e83df36cc897d34173cd" + "url": "https://github.com/orchestral/workbench.git", + "reference": "660046639af4538d6c56373c9222ca4c93055c42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/factory-muffin/zipball/62c8c31d47667523da14e83df36cc897d34173cd", - "reference": "62c8c31d47667523da14e83df36cc897d34173cd", + "url": "https://api.github.com/repos/orchestral/workbench/zipball/660046639af4538d6c56373c9222ca4c93055c42", + "reference": "660046639af4538d6c56373c9222ca4c93055c42", "shasum": "" }, "require": { - "php": ">=5.4.0" - }, - "replace": { - "zizaco/factory-muff": "self.version" + "composer-runtime-api": "^2.2", + "fakerphp/faker": "^1.23", + "laravel/framework": "^13.0.0", + "laravel/pail": "^1.2.5", + "laravel/tinker": "^3.0.0", + "nunomaduro/collision": "^8.9", + "orchestra/canvas": "^11.0.1", + "orchestra/sidekick": "~1.1.23|~1.2.20", + "orchestra/testbench-core": "^11.5.0", + "php": "^8.3", + "symfony/process": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0" }, "require-dev": { - "doctrine/orm": "^2.5", - "illuminate/database": "5.0.* || 5.1.* || 5.5.* || ^6.0", - "league/factory-muffin-faker": "^2.3", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20" + "laravel/pint": "^1.22.0", + "mockery/mockery": "^1.6.12", + "phpstan/phpstan": "^2.1.33", + "phpunit/phpunit": "^11.5.50|^12.5.8|^13.0.0", + "spatie/laravel-ray": "^1.43.6" }, "suggest": { - "doctrine/orm": "Factory Muffin supports doctrine through the repository store.", - "illuminate/database": "Factory Muffin supports eloquent through the model store.", - "league/factory-muffin-faker": "Factory Muffin is very powerful together with faker." + "ext-pcntl": "Required to use all features of the console signal trapping." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, "autoload": { "psr-4": { - "League\\FactoryMuffin\\": "src/" + "Orchestra\\Workbench\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9863,66 +13914,104 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "graham@alt-three.com" - }, - { - "name": "Scott Robertson", - "email": "scottymeuk@gmail.com" + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" } ], - "description": "The goal of this package is to enable the rapid creation of objects for the purpose of testing.", - "homepage": "http://factory-muffin.thephpleague.com/", + "description": "Workbench Companion for Laravel Packages Development", "keywords": [ - "factory", + "dev", + "laravel", + "laravel-packages", "testing" ], "support": { - "issues": "https://github.com/thephpleague/factory-muffin/issues", - "source": "https://github.com/thephpleague/factory-muffin/tree/v3.3.0" + "issues": "https://github.com/orchestral/workbench/issues", + "source": "https://github.com/orchestral/workbench/tree/v11.3.0" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/factory-muffin", - "type": "tidelift" - } - ], - "time": "2020-12-13T18:38:47+00:00" + "time": "2026-09-23T23:52:50+00:00" }, { - "name": "league/factory-muffin-faker", - "version": "v2.3.0", + "name": "pestphp/pest", + "version": "v4.7.8", "source": { "type": "git", - "url": "https://github.com/thephpleague/factory-muffin-faker.git", - "reference": "258068c840e8fdc45d1cb1636a0890e92f2e864a" + "url": "https://github.com/pestphp/pest.git", + "reference": "5b2293f67adcf1b2320b33f521b94a692d18f360" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/factory-muffin-faker/zipball/258068c840e8fdc45d1cb1636a0890e92f2e864a", - "reference": "258068c840e8fdc45d1cb1636a0890e92f2e864a", + "url": "https://api.github.com/repos/pestphp/pest/zipball/5b2293f67adcf1b2320b33f521b94a692d18f360", + "reference": "5b2293f67adcf1b2320b33f521b94a692d18f360", "shasum": "" }, "require": { - "fakerphp/faker": "^1.9.1", - "php": ">=5.4.0" + "brianium/paratest": "^7.20.0", + "composer/xdebug-handler": "^3.0.5", + "nunomaduro/collision": "^8.9.5", + "nunomaduro/termwind": "^2.4.0", + "pestphp/pest-plugin": "^4.0.0", + "pestphp/pest-plugin-arch": "^4.0.2", + "pestphp/pest-plugin-mutate": "^4.0.1", + "pestphp/pest-plugin-profanity": "^4.2.1", + "php": "^8.3.0", + "phpunit/phpunit": "^12.5.33", + "symfony/process": "^7.4.13|^8.1.0" + }, + "conflict": { + "filp/whoops": "<2.18.3", + "phpunit/phpunit": ">12.5.33", + "sebastian/exporter": "<7.0.0", + "webmozart/assert": "<1.11.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20" + "mrpunyapal/peststan": "^0.2.12", + "pestphp/pest-dev-tools": "^4.1.0", + "pestphp/pest-plugin-browser": "^4.3.1", + "pestphp/pest-plugin-type-coverage": "^4.0.4", + "psy/psysh": "^0.12.24" }, + "bin": [ + "bin/pest" + ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.3-dev" + "pest": { + "plugins": [ + "Pest\\Mutate\\Plugins\\Mutate", + "Pest\\Plugins\\Configuration", + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Shard", + "Pest\\Plugins\\Parallel" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], "psr-4": { - "League\\FactoryMuffin\\Faker\\": "src/" + "Pest\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9931,273 +14020,278 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "graham@alt-three.com" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "The goal of this package is to wrap faker to make it super easy to use with factory muffin.", - "homepage": "http://factory-muffin.thephpleague.com/", + "description": "The elegant PHP Testing Framework.", "keywords": [ - "factory", - "faker", - "testing" + "framework", + "pest", + "php", + "test", + "testing", + "unit" ], "support": { - "issues": "https://github.com/thephpleague/factory-muffin-faker/issues", - "source": "https://github.com/thephpleague/factory-muffin-faker/tree/v2.3.0" + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v4.7.8" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", - "type": "github" + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" }, { - "url": "https://tidelift.com/funding/github/packagist/league/factory-muffin-faker", - "type": "tidelift" + "url": "https://github.com/nunomaduro", + "type": "github" } ], - "time": "2020-12-13T15:53:28+00:00" + "time": "2026-08-03T20:49:44+00:00" }, { - "name": "league/html-to-markdown", - "version": "5.1.1", + "name": "pestphp/pest-plugin", + "version": "v4.0.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/html-to-markdown.git", - "reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd" + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "9d4b93d7f73d3f9c3189bb22c220fef271cdf568" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/0b4066eede55c48f38bcee4fb8f0aa85654390fd", - "reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/9d4b93d7f73d3f9c3189bb22c220fef271cdf568", + "reference": "9d4b93d7f73d3f9c3189bb22c220fef271cdf568", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-xml": "*", - "php": "^7.2.5 || ^8.0" + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.3" + }, + "conflict": { + "pestphp/pest": "<4.0.0" }, "require-dev": { - "mikehaertl/php-shellcommand": "^1.1.0", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^8.5 || ^9.2", - "scrutinizer/ocular": "^1.6", - "unleashedtech/php-coding-standard": "^2.7 || ^3.0", - "vimeo/psalm": "^4.22 || ^5.0" + "composer/composer": "^2.8.10", + "pestphp/pest": "^4.0.0", + "pestphp/pest-dev-tools": "^4.0.0" }, - "bin": [ - "bin/html-to-markdown" - ], - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "5.2-dev" - } + "class": "Pest\\Plugin\\Manager" }, "autoload": { "psr-4": { - "League\\HTMLToMarkdown\\": "src/" + "Pest\\Plugin\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - }, - { - "name": "Nick Cernis", - "email": "nick@cern.is", - "homepage": "http://modernnerd.net", - "role": "Original Author" - } - ], - "description": "An HTML-to-markdown conversion helper for PHP", - "homepage": "https://github.com/thephpleague/html-to-markdown", + "description": "The Pest plugin manager", "keywords": [ - "html", - "markdown" + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" ], "support": { - "issues": "https://github.com/thephpleague/html-to-markdown/issues", - "source": "https://github.com/thephpleague/html-to-markdown/tree/5.1.1" + "source": "https://github.com/pestphp/pest-plugin/tree/v4.0.0" }, "funding": [ { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", "type": "custom" }, { - "url": "https://github.com/colinodell", + "url": "https://github.com/nunomaduro", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/league/html-to-markdown", - "type": "tidelift" + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" } ], - "time": "2023-07-12T21:21:09+00:00" + "time": "2025-08-20T12:35:58+00:00" }, { - "name": "marc-mabe/php-enum", - "version": "v4.7.2", + "name": "pestphp/pest-plugin-arch", + "version": "v4.0.2", "source": { "type": "git", - "url": "https://github.com/marc-mabe/php-enum.git", - "reference": "bb426fcdd65c60fb3638ef741e8782508fda7eef" + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "3fb0d02a91b9da504b139dc7ab2a31efb7c3215c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/marc-mabe/php-enum/zipball/bb426fcdd65c60fb3638ef741e8782508fda7eef", - "reference": "bb426fcdd65c60fb3638ef741e8782508fda7eef", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/3fb0d02a91b9da504b139dc7ab2a31efb7c3215c", + "reference": "3fb0d02a91b9da504b139dc7ab2a31efb7c3215c", "shasum": "" }, "require": { - "ext-reflection": "*", - "php": "^7.1 | ^8.0" + "pestphp/pest-plugin": "^4.0.0", + "php": "^8.3", + "ta-tikoma/phpunit-architecture-test": "^0.8.7" }, "require-dev": { - "phpbench/phpbench": "^0.16.10 || ^1.0.4", - "phpstan/phpstan": "^1.3.1", - "phpunit/phpunit": "^7.5.20 | ^8.5.22 | ^9.5.11", - "vimeo/psalm": "^4.17.0 | ^5.26.1" + "pestphp/pest": "^4.4.6", + "pestphp/pest-dev-tools": "^4.1.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-3.x": "3.2-dev", - "dev-master": "4.7-dev" + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] } }, "autoload": { + "files": [ + "src/Autoload.php" + ], "psr-4": { - "MabeEnum\\": "src/" - }, - "classmap": [ - "stubs/Stringable.php" - ] + "Pest\\Arch\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Marc Bennewitz", - "email": "dev@mabe.berlin", - "homepage": "https://mabe.berlin/", - "role": "Lead" - } + "MIT" ], - "description": "Simple and fast implementation of enumerations with native PHP", - "homepage": "https://github.com/marc-mabe/php-enum", + "description": "The Arch plugin for Pest PHP.", "keywords": [ - "enum", - "enum-map", - "enum-set", - "enumeration", - "enumerator", - "enummap", - "enumset", - "map", - "set", - "type", - "type-hint", - "typehint" + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" ], "support": { - "issues": "https://github.com/marc-mabe/php-enum/issues", - "source": "https://github.com/marc-mabe/php-enum/tree/v4.7.2" + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v4.0.2" }, - "time": "2025-09-14T11:18:39+00:00" + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2026-04-10T17:20:19+00:00" }, { - "name": "ml/iri", - "version": "1.1.4", - "target-dir": "ML/IRI", + "name": "pestphp/pest-plugin-laravel", + "version": "v4.1.0", "source": { "type": "git", - "url": "https://github.com/lanthaler/IRI.git", - "reference": "cbd44fa913e00ea624241b38cefaa99da8d71341" + "url": "https://github.com/pestphp/pest-plugin-laravel.git", + "reference": "3057a36669ff11416cc0dc2b521b3aec58c488d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lanthaler/IRI/zipball/cbd44fa913e00ea624241b38cefaa99da8d71341", - "reference": "cbd44fa913e00ea624241b38cefaa99da8d71341", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/3057a36669ff11416cc0dc2b521b3aec58c488d0", + "reference": "3057a36669ff11416cc0dc2b521b3aec58c488d0", "shasum": "" }, "require": { - "lib-pcre": ">=4.0", - "php": ">=5.3.0" + "laravel/framework": "^11.45.2|^12.52.0|^13.0", + "pestphp/pest": "^4.4.1", + "php": "^8.3.0" + }, + "require-dev": { + "laravel/dusk": "^8.3.6", + "orchestra/testbench": "^9.13.0|^10.9.0|^11.0", + "pestphp/pest-dev-tools": "^4.1.0" }, "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Laravel\\Plugin" + ] + }, + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + } + }, "autoload": { - "psr-0": { - "ML\\IRI": "" + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Laravel\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Markus Lanthaler", - "email": "mail@markus-lanthaler.com", - "homepage": "http://www.markus-lanthaler.com", - "role": "Developer" - } - ], - "description": "IRI handling for PHP", - "homepage": "http://www.markus-lanthaler.com", + "description": "The Pest Laravel Plugin", "keywords": [ - "URN", - "iri", - "uri", - "url" + "framework", + "laravel", + "pest", + "php", + "test", + "testing", + "unit" ], "support": { - "issues": "https://github.com/lanthaler/IRI/issues", - "source": "https://github.com/lanthaler/IRI/tree/master" + "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v4.1.0" }, - "time": "2014-01-21T13:43:39+00:00" + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2026-02-21T00:29:45+00:00" }, { - "name": "ml/json-ld", - "version": "1.2.1", + "name": "pestphp/pest-plugin-mutate", + "version": "v4.0.1", "source": { "type": "git", - "url": "https://github.com/lanthaler/JsonLD.git", - "reference": "537e68e87a6bce23e57c575cd5dcac1f67ce25d8" + "url": "https://github.com/pestphp/pest-plugin-mutate.git", + "reference": "d9b32b60b2385e1688a68cc227594738ec26d96c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lanthaler/JsonLD/zipball/537e68e87a6bce23e57c575cd5dcac1f67ce25d8", - "reference": "537e68e87a6bce23e57c575cd5dcac1f67ce25d8", + "url": "https://api.github.com/repos/pestphp/pest-plugin-mutate/zipball/d9b32b60b2385e1688a68cc227594738ec26d96c", + "reference": "d9b32b60b2385e1688a68cc227594738ec26d96c", "shasum": "" }, "require": { - "ext-json": "*", - "ml/iri": "^1.1.1", - "php": ">=5.3.0" + "nikic/php-parser": "^5.6.1", + "pestphp/pest-plugin": "^4.0.0", + "php": "^8.3", + "psr/simple-cache": "^3.0.0" }, "require-dev": { - "json-ld/tests": "1.0", - "phpunit/phpunit": "^4" + "pestphp/pest": "^4.0.0", + "pestphp/pest-dev-tools": "^4.0.0", + "pestphp/pest-plugin-type-coverage": "^4.0.0" }, "type": "library", "autoload": { "psr-4": { - "ML\\JsonLD\\": "" + "Pest\\Mutate\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -10206,120 +14300,133 @@ ], "authors": [ { - "name": "Markus Lanthaler", - "email": "mail@markus-lanthaler.com", - "homepage": "http://www.markus-lanthaler.com", - "role": "Developer" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + }, + { + "name": "Sandro Gehri", + "email": "sandrogehri@gmail.com" } ], - "description": "JSON-LD Processor for PHP", - "homepage": "http://www.markus-lanthaler.com", + "description": "Mutates your code to find untested cases", "keywords": [ - "JSON-LD", - "jsonld" + "framework", + "mutate", + "mutation", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" ], "support": { - "issues": "https://github.com/lanthaler/JsonLD/issues", - "source": "https://github.com/lanthaler/JsonLD/tree/1.2.1" + "source": "https://github.com/pestphp/pest-plugin-mutate/tree/v4.0.1" }, - "time": "2022-09-29T08:45:17+00:00" + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/gehrisandro", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-08-21T20:19:25+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.13.4", + "name": "pestphp/pest-plugin-profanity", + "version": "v4.2.1", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + "url": "https://github.com/pestphp/pest-plugin-profanity.git", + "reference": "343cfa6f3564b7e35df0ebb77b7fa97039f72b27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", - "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "url": "https://api.github.com/repos/pestphp/pest-plugin-profanity/zipball/343cfa6f3564b7e35df0ebb77b7fa97039f72b27", + "reference": "343cfa6f3564b7e35df0ebb77b7fa97039f72b27", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" + "pestphp/pest-plugin": "^4.0.0", + "php": "^8.3" }, "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + "faissaloux/pest-plugin-inside": "^1.9", + "pestphp/pest": "^4.0.0", + "pestphp/pest-dev-tools": "^4.0.0" }, "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Profanity\\Plugin" + ] + } + }, "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], "psr-4": { - "DeepCopy\\": "src/DeepCopy/" + "Pest\\Profanity\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "description": "The Pest Profanity Plugin", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "framework", + "pest", + "php", + "plugin", + "profanity", + "test", + "testing", + "unit" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + "source": "https://github.com/pestphp/pest-plugin-profanity/tree/v4.2.1" }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2025-08-01T08:46:24+00:00" + "time": "2025-12-08T00:13:17+00:00" }, { - "name": "nikic/php-parser", - "version": "v5.8.0", + "name": "phar-io/manifest", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f" + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/044a6a392ff8ad0d61f14370a5fbbd0a0107152f", - "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, - "bin": [ - "bin/php-parse" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10327,114 +14434,109 @@ ], "authors": [ { - "name": "Nikita Popov" + "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": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.8.0" + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2026-07-04T14:30:18+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { - "name": "nystudio107/craft-code-editor", - "version": "1.0.29", + "name": "phar-io/version", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/nystudio107/craft-code-editor.git", - "reference": "5b071512ee2ad2b8004f979f88ff3bf722bbcb4d" + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nystudio107/craft-code-editor/zipball/5b071512ee2ad2b8004f979f88ff3bf722bbcb4d", - "reference": "5b071512ee2ad2b8004f979f88ff3bf722bbcb4d", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "craftcms/cms": "^3.0.0 || ^4.0.0 || ^5.0.0", - "phpdocumentor/reflection-docblock": "^5.0.0" - }, - "require-dev": { - "craftcms/ecs": "dev-main", - "craftcms/phpstan": "dev-main", - "craftcms/rector": "dev-main" - }, - "type": "yii2-extension", - "extra": { - "bootstrap": "nystudio107\\codeeditor\\CodeEditor" + "php": "^7.2 || ^8.0" }, + "type": "library", "autoload": { - "psr-4": { - "nystudio107\\codeeditor\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "nystudio107", - "homepage": "https://nystudio107.com" + "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": "Provides a code editor field with Twig & Craft API autocomplete", - "keywords": [ - "Craft", - "Monaco", - "cms", - "code", - "craftcms", - "css", - "editor", - "javascript", - "markdown", - "twig" - ], + "description": "Library for handling version information and constraints", "support": { - "docs": "https://github.com/nystudio107/craft-code-editor/blob/v1/README.md", - "issues": "https://github.com/nystudio107/craft-code-editor/issues", - "source": "https://github.com/nystudio107/craft-code-editor" + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "funding": [ - { - "url": "https://github.com/khalwat", - "type": "github" - } - ], - "time": "2026-01-30T19:10:22+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { - "name": "oscarotero/html-parser", - "version": "v0.1.8", - "source": { - "type": "git", - "url": "https://github.com/oscarotero/html-parser.git", - "reference": "10f3219267a365d9433f2f7d1694209c9d436c8d" - }, + "name": "phpstan/phpstan", + "version": "2.3.1", "dist": { "type": "zip", - "url": "https://api.github.com/repos/oscarotero/html-parser/zipball/10f3219267a365d9433f2f7d1694209c9d436c8d", - "reference": "10f3219267a365d9433f2f7d1694209c9d436c8d", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/6155239b488e95d26d1ebd95c6b4bb294d7f09db", + "reference": "6155239b488e95d26d1ebd95c6b4bb294d7f09db", "shasum": "" }, "require": { - "php": "^7.2 || ^8" + "php": "^7.4|^8.0" }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.11", - "phpunit/phpunit": "^8.0" + "conflict": { + "phpstan/phpstan-shim": "*" }, + "bin": [ + "phpstan", + "phpstan.phar" + ], "type": "library", "autoload": { - "psr-4": { - "HtmlParser\\": "src" - } + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10442,52 +14544,77 @@ ], "authors": [ { - "name": "Oscar Otero", - "email": "oom@oscarotero.com", - "homepage": "http://oscarotero.com", - "role": "Developer" + "name": "Ondřej Mirtes" + }, + { + "name": "Markus Staab" + }, + { + "name": "Vincent Langlet" } ], - "description": "Parse html strings to DOMDocument", - "homepage": "https://github.com/oscarotero/html-parser", + "description": "PHPStan - PHP Static Analysis Tool", "keywords": [ - "dom", - "html", - "parser" + "dev", + "static analysis" ], "support": { - "email": "oom@oscarotero.com", - "issues": "https://github.com/oscarotero/html-parser/issues", - "source": "https://github.com/oscarotero/html-parser/tree/v0.1.8" + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, - "time": "2023-11-29T20:28:41+00:00" + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2026-10-08T21:09:11+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.4", + "name": "phpunit/php-code-coverage", + "version": "12.5.8", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "7440368d94738d54f2c1de24dbd3871793bbb0dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7440368d94738d54f2c1de24dbd3871793bbb0dd", + "reference": "7440368d94738d54f2c1de24dbd3871793bbb0dd", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "ext-phar": "*", "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "nikic/php-parser": "^5.9.0", + "php": ">=8.3", + "phpunit/php-text-template": "^5.0.1", + "sebastian/complexity": "^5.0", + "sebastian/environment": "^8.1.2", + "sebastian/lines-of-code": "^4.0.1", + "sebastian/version": "^6.0", + "theseer/tokenizer": "^2.0.1" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.37" + }, + "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": "2.0.x-dev" + "dev-main": "12.5.x-dev" } }, "autoload": { @@ -10500,53 +14627,70 @@ "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" + "role": "lead" } ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "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/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.4" + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.8" }, "funding": [ { - "url": "https://github.com/theseer", + "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" } ], - "time": "2024-03-03T12:33:53+00:00" + "time": "2026-10-03T14:03:50+00:00" }, { - "name": "phar-io/version", - "version": "3.2.1", + "name": "phpunit/php-file-iterator", + "version": "6.0.2", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a248d1640ab059b075f53a2ef0f9856e864e06b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a248d1640ab059b075f53a2ef0f9856e864e06b5", + "reference": "a248d1640ab059b075f53a2ef0f9856e864e06b5", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.33" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -10557,197 +14701,203 @@ "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" + "role": "lead" } ], - "description": "Library for handling version information and constraints", + "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/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.2" }, - "time": "2022-02-21T01:04:05+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" + } + ], + "time": "2026-08-25T14:40:53+00:00" }, { - "name": "phpoption/phpoption", - "version": "1.9.5", + "name": "phpunit/php-invoker", + "version": "6.0.0", "source": { "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", - "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0" + "php": ">=8.3" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + "ext-pcntl": "*", + "phpunit/phpunit": "^12.0" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, "branch-alias": { - "dev-master": "1.9-dev" + "dev-main": "6.0-dev" } }, "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "BSD-3-Clause" ], "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" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Option Type for PHP", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", "keywords": [ - "language", - "option", - "php", - "type" + "process" ], "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" } ], - "time": "2025-12-27T19:41:33+00:00" + "time": "2025-02-07T04:58:58+00:00" }, { - "name": "phpstan/phpstan", - "version": "1.12.33", + "name": "phpunit/php-text-template", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "babab73b7ef9fae406f2eb3ee11323a61caa63d5" + }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/37982d6fc7cbb746dda7773530cda557cdf119e1", - "reference": "37982d6fc7cbb746dda7773530cda557cdf119e1", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/babab73b7ef9fae406f2eb3ee11323a61caa63d5", + "reference": "babab73b7ef9fae406f2eb3ee11323a61caa63d5", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "php": ">=8.3" }, - "conflict": { - "phpstan/phpstan-shim": "*" + "require-dev": { + "phpunit/phpunit": "^12.5.37" }, - "bin": [ - "phpstan", - "phpstan.phar" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, "autoload": { - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "PHPStan - PHP Static Analysis Tool", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ - "dev", - "static analysis" + "template" ], "support": { - "docs": "https://phpstan.org/user-guide/getting-started", - "forum": "https://github.com/phpstan/phpstan/discussions", - "issues": "https://github.com/phpstan/phpstan/issues", - "security": "https://github.com/phpstan/phpstan/security/policy", - "source": "https://github.com/phpstan/phpstan-src" + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.1" }, "funding": [ { - "url": "https://github.com/ondrejmirtes", + "url": "https://github.com/sebastianbergmann", "type": "github" }, { - "url": "https://github.com/phpstan", - "type": "github" + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-text-template", + "type": "tidelift" } ], - "time": "2026-02-28T20:30:03+00:00" + "time": "2026-10-03T04:51:29+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "11.0.12", + "name": "phpunit/php-timer", + "version": "8.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56", - "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^5.7.0", - "php": ">=8.2", - "phpunit/php-file-iterator": "^5.1.0", - "phpunit/php-text-template": "^4.0.1", - "sebastian/code-unit-reverse-lookup": "^4.0.1", - "sebastian/complexity": "^4.0.1", - "sebastian/environment": "^7.2.1", - "sebastian/lines-of-code": "^3.0.1", - "sebastian/version": "^5.0.2", - "theseer/tokenizer": "^1.3.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.5.46" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "11.0.x-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -10766,65 +14916,79 @@ "role": "lead" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "coverage", - "testing", - "xunit" + "timer" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.12" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", - "type": "tidelift" } ], - "time": "2025-12-24T07:01:01+00:00" + "time": "2025-02-07T04:59:38+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "5.1.1", + "name": "phpunit/phpunit", + "version": "12.5.33", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "b98e028a26c5c5ba7e4a54be96ccf35f2914d184" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/2f3a64888c814fc235386b7387dd5b5ed92ad903", - "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b98e028a26c5c5ba7e4a54be96ccf35f2914d184", + "reference": "b98e028a26c5c5ba7e4a54be96ccf35f2914d184", "shasum": "" }, "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" + "ext-dom": "*", + "ext-filter": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.3", + "phpunit/php-code-coverage": "^12.5.7", + "phpunit/php-file-iterator": "^6.0.1", + "phpunit/php-invoker": "^6.0.0", + "phpunit/php-text-template": "^5.0.0", + "phpunit/php-timer": "^8.0.0", + "sebastian/cli-parser": "^4.2.1", + "sebastian/comparator": "^7.1.8", + "sebastian/diff": "^7.0.0", + "sebastian/environment": "^8.1.2", + "sebastian/exporter": "^7.0.3", + "sebastian/global-state": "^8.0.3", + "sebastian/object-enumerator": "^7.0.0", + "sebastian/recursion-context": "^7.0.1", + "sebastian/type": "^6.0.4", + "sebastian/version": "^6.0.0", + "staabm/side-effects-detector": "^1.0.5" }, + "bin": [ + "phpunit" + ], "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "12.5-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -10840,191 +15004,189 @@ "role": "lead" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "filesystem", - "iterator" + "phpunit", + "testing", + "xunit" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.1" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.33" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", - "type": "tidelift" + "url": "https://phpunit.de/sponsoring.html", + "type": "other" } ], - "time": "2026-02-02T13:52:54+00:00" + "time": "2026-07-28T13:58:09+00:00" }, { - "name": "phpunit/php-invoker", - "version": "5.0.1", + "name": "psy/psysh", + "version": "v0.12.24", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + "url": "https://github.com/bobthecow/psysh.git", + "reference": "ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", - "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1", + "reference": "ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1", "shasum": "" }, "require": { - "php": ">=8.2" + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^8.0 || ^7.0 || ^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": { - "ext-pcntl": "*", - "phpunit/phpunit": "^11.0" + "bamarni/composer-bin-plugin": "^1.2", + "composer/class-map-generator": "^1.6" }, "suggest": { - "ext-pcntl": "*" + "composer/class-map-generator": "Improved tab completion performance with better class discovery.", + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, + "bin": [ + "bin/psysh" + ], "type": "library", "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "0.12.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Justin Hileman", + "email": "justin@justinhileman.info" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "description": "An interactive shell for modern PHP.", + "homepage": "https://psysh.org", "keywords": [ - "process" + "REPL", + "console", + "interactive", + "shell" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.24" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-07-03T05:07:44+00:00" + "time": "2026-06-29T15:41:09+00:00" }, { - "name": "phpunit/php-text-template", - "version": "4.0.1", + "name": "rector/rector", + "version": "2.7.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + "url": "https://github.com/rectorphp/rector.git", + "reference": "4d6a39b7fff302cac0ce90cd959a53c2f6a32776" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", - "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/4d6a39b7fff302cac0ce90cd959a53c2f6a32776", + "reference": "4d6a39b7fff302cac0ce90cd959a53c2f6a32776", "shasum": "" }, "require": { - "php": ">=8.2" + "php": "^7.4|^8.0", + "phpstan/phpstan": "^2.3.0" }, - "require-dev": { - "phpunit/phpunit": "^11.0" + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" }, + "bin": [ + "bin/rector" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } + "MIT" ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "homepage": "https://getrector.com/", "keywords": [ - "template" + "automation", + "dev", + "migration", + "refactoring" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/2.7.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/tomasvotruba", "type": "github" } ], - "time": "2024-07-03T05:08:43+00:00" + "time": "2026-10-06T08:46:45+00:00" }, { - "name": "phpunit/php-timer", - "version": "7.0.1", + "name": "samdark/yii2-psr-log-target", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + "url": "https://github.com/samdark/yii2-psr-log-target.git", + "reference": "5f14f21d5ee4294fe9eb3e723ec8a3908ca082ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", - "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "url": "https://api.github.com/repos/samdark/yii2-psr-log-target/zipball/5f14f21d5ee4294fe9eb3e723ec8a3908ca082ea", + "reference": "5f14f21d5ee4294fe9eb3e723ec8a3908ca082ea", "shasum": "" }, "require": { - "php": ">=8.2" + "psr/log": "~1.0.2|~1.1.0|~3.0.0", + "yiisoft/yii2": "~2.0.0" }, "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } + "phpunit/phpunit": "~4.4|~10.4.2" }, + "type": "yii2-extension", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "samdark\\log\\": "src", + "samdark\\log\\tests\\": "tests" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11032,88 +15194,61 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Alexander Makarov", + "email": "sam@rmcreative.ru" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Yii 2 log target which uses PSR-3 compatible logger", + "homepage": "https://github.com/samdark/yii2-psr-log-target", "keywords": [ - "timer" + "extension", + "log", + "psr-3", + "yii" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "security": "https://github.com/sebastianbergmann/php-timer/security/policy", - "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + "issues": "https://github.com/samdark/yii2-psr-log-target/issues", + "source": "https://github.com/samdark/yii2-psr-log-target" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/samdark", "type": "github" + }, + { + "url": "https://www.patreon.com/samdark", + "type": "patreon" } ], - "time": "2024-07-03T05:09:35+00:00" + "time": "2023-11-23T14:11:29+00:00" }, { - "name": "phpunit/phpunit", - "version": "11.5.56", + "name": "sebastian/cli-parser", + "version": "4.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "5f83edffa6967c3db468d48a695ec7bcb02e9256" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "7d05781b13f7dec9043a629a21d086ed74582a15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5f83edffa6967c3db468d48a695ec7bcb02e9256", - "reference": "5f83edffa6967c3db468d48a695ec7bcb02e9256", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/7d05781b13f7dec9043a629a21d086ed74582a15", + "reference": "7d05781b13f7dec9043a629a21d086ed74582a15", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-filter": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.4", - "phar-io/manifest": "^2.0.4", - "phar-io/version": "^3.2.1", - "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.12", - "phpunit/php-file-iterator": "^5.1.1", - "phpunit/php-invoker": "^5.0.1", - "phpunit/php-text-template": "^4.0.1", - "phpunit/php-timer": "^7.0.1", - "sebastian/cli-parser": "^3.0.2", - "sebastian/code-unit": "^3.0.3", - "sebastian/comparator": "^6.3.3", - "sebastian/diff": "^6.0.2", - "sebastian/environment": "^7.2.1", - "sebastian/exporter": "^6.3.2", - "sebastian/global-state": "^7.0.2", - "sebastian/object-enumerator": "^6.0.1", - "sebastian/recursion-context": "^6.0.3", - "sebastian/type": "^5.1.3", - "sebastian/version": "^5.0.2", - "staabm/side-effects-detector": "^1.0.5" + "php": ">=8.3" }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" + "require-dev": { + "phpunit/phpunit": "^12.5.25" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-main": "11.5-dev" + "dev-main": "4.2-dev" } }, "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], "classmap": [ "src/" ] @@ -11129,188 +15264,208 @@ "role": "lead" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.56" + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.2.1" }, "funding": [ { - "url": "https://phpunit.de/sponsoring.html", - "type": "other" + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser", + "type": "tidelift" } ], - "time": "2026-07-06T14:52:39+00:00" + "time": "2026-05-17T05:29:34+00:00" }, { - "name": "psy/psysh", - "version": "v0.12.24", + "name": "sebastian/comparator", + "version": "7.1.8", "source": { "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "7c65c1e79836812819705b473a90c12399542485" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1", - "reference": "ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/7c65c1e79836812819705b473a90c12399542485", + "reference": "7c65c1e79836812819705b473a90c12399542485", "shasum": "" }, "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "nikic/php-parser": "^5.0 || ^4.0", - "php": "^8.0 || ^7.4", - "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^8.0 || ^7.0 || ^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" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.3", + "sebastian/diff": "^7.0", + "sebastian/exporter": "^7.0.3" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "composer/class-map-generator": "^1.6" + "phpunit/phpunit": "^12.5.25" }, "suggest": { - "composer/class-map-generator": "Improved tab completion performance with better class discovery.", - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + "ext-bcmath": "For comparing BcMath\\Number objects" }, - "bin": [ - "bin/psysh" - ], "type": "library", "extra": { - "bamarni-bin": { - "bin-links": false, - "forward-command": false - }, "branch-alias": { - "dev-main": "0.12.x-dev" + "dev-main": "7.1-dev" } }, "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Psy\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Justin Hileman", - "email": "justin@justinhileman.info" + "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": "An interactive shell for modern PHP.", - "homepage": "https://psysh.org", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ - "REPL", - "console", - "interactive", - "shell" + "comparator", + "compare", + "equality" ], "support": { - "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.24" + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.8" }, - "time": "2026-06-29T15:41:09+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-05-21T04:45:25+00:00" }, { - "name": "rector/rector", - "version": "1.2.10", + "name": "sebastian/complexity", + "version": "5.0.0", "source": { "type": "git", - "url": "https://github.com/rectorphp/rector.git", - "reference": "40f9cf38c05296bd32f444121336a521a293fa61" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/40f9cf38c05296bd32f444121336a521a293fa61", - "reference": "40f9cf38c05296bd32f444121336a521a293fa61", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.12.5" - }, - "conflict": { - "rector/rector-doctrine": "*", - "rector/rector-downgrade-php": "*", - "rector/rector-phpunit": "*", - "rector/rector-symfony": "*" + "nikic/php-parser": "^5.0", + "php": ">=8.3" }, - "suggest": { - "ext-dom": "To manipulate phpunit.xml via the custom-rule command" + "require-dev": { + "phpunit/phpunit": "^12.0" }, - "bin": [ - "bin/rector" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, "autoload": { - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "Instant Upgrade and Automated Refactoring of any PHP code", - "keywords": [ - "automation", - "dev", - "migration", - "refactoring" + "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/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/1.2.10" + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0" }, "funding": [ { - "url": "https://github.com/tomasvotruba", + "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2024-11-08T13:59:10+00:00" + "time": "2025-02-07T04:55:25+00:00" }, { - "name": "sebastian/cli-parser", - "version": "3.0.2", + "name": "sebastian/diff", + "version": "7.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", - "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6", + "reference": "cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.5.33", + "symfony/process": "^7.4.17" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -11325,49 +15480,73 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/7.0.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/diff", + "type": "tidelift" } ], - "time": "2024-07-03T04:41:36+00:00" + "time": "2026-08-25T15:35:54+00:00" }, { - "name": "sebastian/code-unit", - "version": "3.0.3", + "name": "sebastian/environment", + "version": "8.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "9d32c685773823b1983e256ae4ecd48a10d6e439" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", - "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/9d32c685773823b1983e256ae4ecd48a10d6e439", + "reference": "9d32c685773823b1983e256ae4ecd48a10d6e439", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.5" + "phpunit/phpunit": "^12.5.26" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "8.1-dev" } }, "autoload": { @@ -11382,49 +15561,67 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "security": "https://github.com/sebastianbergmann/code-unit/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3" + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/8.1.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" } ], - "time": "2025-03-19T07:56:08+00:00" + "time": "2026-05-25T13:40:20+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "4.0.1", + "name": "sebastian/exporter", + "version": "7.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "183a9b2632194febd219bb9246eee421dad8d45e" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "c5e21b5de653ce0a769fb36f5cdfcb5e7a32cf23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", - "reference": "183a9b2632194febd219bb9246eee421dad8d45e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c5e21b5de653ce0a769fb36f5cdfcb5e7a32cf23", + "reference": "c5e21b5de653ce0a769fb36f5cdfcb5e7a32cf23", "shasum": "" }, "require": { - "php": ">=8.2" + "ext-mbstring": "*", + "php": ">=8.3", + "sebastian/recursion-context": "^7.0.1" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.5.25" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -11440,54 +15637,82 @@ { "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": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "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/code-unit-reverse-lookup/issues", - "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-07-03T04:45:54+00:00" + "time": "2026-05-20T04:37:17+00:00" }, { - "name": "sebastian/comparator", - "version": "6.3.3", + "name": "sebastian/global-state", + "version": "8.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "b164d3274d6537ab462591c5755f76a8f5b1aae9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", - "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b164d3274d6537ab462591c5755f76a8f5b1aae9", + "reference": "b164d3274d6537ab462591c5755f76a8f5b1aae9", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/diff": "^6.0", - "sebastian/exporter": "^6.0" + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0.1" }, "require-dev": { - "phpunit/phpunit": "^11.4" - }, - "suggest": { - "ext-bcmath": "For comparing BcMath\\Number objects" + "ext-dom": "*", + "phpunit/phpunit": "^12.5.28" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.3-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -11503,31 +15728,17 @@ { "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", + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ - "comparator", - "compare", - "equality" + "global state" ], "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.3" + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.3" }, "funding": [ { @@ -11543,32 +15754,32 @@ "type": "thanks_dev" }, { - "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", "type": "tidelift" } ], - "time": "2026-01-24T09:26:40+00:00" + "time": "2026-06-01T15:10:33+00:00" }, { - "name": "sebastian/complexity", + "name": "sebastian/lines-of-code", "version": "4.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "d543b8ef219dcd8da262cbb958639a96bedba10e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", - "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d543b8ef219dcd8da262cbb958639a96bedba10e", + "reference": "d543b8ef219dcd8da262cbb958639a96bedba10e", "shasum": "" }, "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.2" + "nikic/php-parser": "^5.7.0", + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.5.25" }, "type": "library", "extra": { @@ -11592,46 +15803,59 @@ "role": "lead" } ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", + "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/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/lines-of-code", + "type": "tidelift" } ], - "time": "2024-07-03T04:49:50+00:00" + "time": "2026-05-19T16:22:07+00:00" }, { - "name": "sebastian/diff", - "version": "6.0.2", + "name": "sebastian/object-enumerator", + "version": "7.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^11.0", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -11647,24 +15871,14 @@ { "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" - ], + "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/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0" }, "funding": [ { @@ -11672,35 +15886,32 @@ "type": "github" } ], - "time": "2024-07-03T04:53:05+00:00" + "time": "2025-02-07T04:57:48+00:00" }, { - "name": "sebastian/environment", - "version": "7.2.1", + "name": "sebastian/object-reflector", + "version": "5.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4", - "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.3" - }, - "suggest": { - "ext-posix": "*" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "7.2-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -11718,64 +15929,45 @@ "email": "sebastian@phpunit.de" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], + "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/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/7.2.1" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", - "type": "tidelift" } ], - "time": "2025-05-21T11:55:47+00:00" + "time": "2025-02-07T04:58:17+00:00" }, { - "name": "sebastian/exporter", - "version": "6.3.2", + "name": "sebastian/recursion-context", + "version": "7.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "70a298763b40b213ec087c51c739efcaa90bcd74" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/70a298763b40b213ec087c51c739efcaa90bcd74", - "reference": "70a298763b40b213ec087c51c739efcaa90bcd74", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/recursion-context": "^6.0" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.3-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -11796,29 +15988,17 @@ "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" - ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.2" + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1" }, "funding": [ { @@ -11834,39 +16014,36 @@ "type": "thanks_dev" }, { - "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", "type": "tidelift" } ], - "time": "2025-09-24T06:12:51+00:00" + "time": "2025-08-13T04:44:59+00:00" }, { - "name": "sebastian/global-state", - "version": "7.0.2", + "name": "sebastian/type", + "version": "6.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "82ff822c2edc46724be9f7411d3163021f602773" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", - "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/82ff822c2edc46724be9f7411d3163021f602773", + "reference": "82ff822c2edc46724be9f7411d3163021f602773", "shasum": "" }, "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" + "php": ">=8.3" }, "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.5.25" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "7.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -11881,52 +16058,58 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Snapshotting of global state", - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], + "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/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/6.0.4" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" } ], - "time": "2024-07-03T04:57:36+00:00" + "time": "2026-05-20T06:45:45+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "3.0.1", + "name": "sebastian/version", + "version": "6.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "9e935a16187e14f39b0e79910dabd614972cdb26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", - "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/9e935a16187e14f39b0e79910dabd614972cdb26", + "reference": "9e935a16187e14f39b0e79910dabd614972cdb26", "shasum": "" }, "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" + "php": ">=8.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -11945,775 +16128,795 @@ "role": "lead" } ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "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/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" + "issues": "https://github.com/sebastianbergmann/version/issues", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/6.0.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/version", + "type": "tidelift" } ], - "time": "2024-07-03T04:58:38+00:00" + "time": "2026-10-04T05:50:08+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "6.0.1", + "name": "seld/cli-prompt", + "version": "1.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "f5b498e631a74204185071eb41f33f38d64608aa" + "url": "https://github.com/Seldaek/cli-prompt.git", + "reference": "b8dfcf02094b8c03b40322c229493bb2884423c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", - "reference": "f5b498e631a74204185071eb41f33f38d64608aa", + "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/b8dfcf02094b8c03b40322c229493bb2884423c5", + "reference": "b8dfcf02094b8c03b40322c229493bb2884423c5", "shasum": "" }, "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" + "php": ">=5.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpstan/phpstan": "^0.12.63" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-master": "1.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Seld\\CliPrompt\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", + "keywords": [ + "cli", + "console", + "hidden", + "input", + "prompt" + ], "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" + "issues": "https://github.com/Seldaek/cli-prompt/issues", + "source": "https://github.com/Seldaek/cli-prompt/tree/1.0.4" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-07-03T05:00:13+00:00" + "time": "2020-12-15T21:32:01+00:00" }, { - "name": "sebastian/object-reflector", - "version": "4.0.1", + "name": "staabm/side-effects-detector", + "version": "1.0.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", - "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", "shasum": "" }, "require": { - "php": ">=8.2" + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, "autoload": { "classmap": [ - "src/" + "lib/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" ], - "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", - "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/staabm", "type": "github" } ], - "time": "2024-07-03T05:01:32+00:00" + "time": "2024-10-20T05:08:20+00:00" }, { - "name": "sebastian/recursion-context", - "version": "6.0.3", + "name": "symfony/polyfill-php83", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", - "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/80ccff923a8d61f73ebe9da0aa94e25232f004ce", + "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce", "shasum": "" }, "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.3" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "6.0-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.3" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.43.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" + "url": "https://github.com/fabpot", + "type": "github" }, { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-08-13T04:42:22+00:00" + "time": "2026-09-25T15:50:05+00:00" }, { - "name": "sebastian/type", - "version": "5.1.3", + "name": "symplify/easy-coding-standard", + "version": "10.3.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449" + "url": "https://github.com/ecsphp/ecs.git", + "reference": "c93878b3c052321231519b6540e227380f90be17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/f77d2d4e78738c98d9a68d2596fe5e8fa380f449", - "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "url": "https://api.github.com/repos/ecsphp/ecs/zipball/c93878b3c052321231519b6540e227380f90be17", + "reference": "c93878b3c052321231519b6540e227380f90be17", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=7.2" }, - "require-dev": { - "phpunit/phpunit": "^11.3" + "conflict": { + "friendsofphp/php-cs-fixer": "<3.0", + "squizlabs/php_codesniffer": "<3.6" }, + "bin": [ + "bin/ecs" + ], "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "10.3-dev" } }, "autoload": { - "classmap": [ - "src/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } + "MIT" ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "Prefixed scoped version of ECS package", "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/5.1.3" + "issues": "https://github.com/easy-coding-standard/ecs/issues", + "source": "https://github.com/easy-coding-standard/ecs/tree/10.3.3" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" + "url": "https://www.paypal.me/rectorphp", + "type": "custom" }, { - "url": "https://tidelift.com/funding/github/packagist/sebastian/type", - "type": "tidelift" + "url": "https://github.com/tomasvotruba", + "type": "github" } ], - "time": "2025-08-09T06:55:48+00:00" + "time": "2022-06-13T14:03:37+00:00" }, { - "name": "sebastian/version", - "version": "5.0.2", + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.8.7", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "1248f3f506ca9641d4f68cebcd538fa489754db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", - "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/1248f3f506ca9641d4f68cebcd538fa489754db8", + "reference": "1248f3f506ca9641d4f68cebcd538fa489754db8", "shasum": "" }, "require": { - "php": ">=8.2" + "nikic/php-parser": "^4.18.0 || ^5.0.0", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0 || ^6.0.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0 || ^8.0.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } + "require-dev": { + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" }, + "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.7" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-10-09T05:16:32+00:00" + "time": "2026-02-17T17:25:14+00:00" }, { - "name": "softcreatr/jsonpath", - "version": "0.10.0", + "name": "thamtech/yii2-ratelimiter-advanced", + "version": "0.5", "source": { "type": "git", - "url": "https://github.com/SoftCreatR/JSONPath.git", - "reference": "74f0b330a98135160db947ba7bc65216b64a0c86" + "url": "https://github.com/thamtech/yii2-ratelimiter-advanced.git", + "reference": "2fde10eaa1ec67e689d06babfc9c68d144d35433" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SoftCreatR/JSONPath/zipball/74f0b330a98135160db947ba7bc65216b64a0c86", - "reference": "74f0b330a98135160db947ba7bc65216b64a0c86", + "url": "https://api.github.com/repos/thamtech/yii2-ratelimiter-advanced/zipball/2fde10eaa1ec67e689d06babfc9c68d144d35433", + "reference": "2fde10eaa1ec67e689d06babfc9c68d144d35433", "shasum": "" }, "require": { - "ext-json": "*", - "php": "8.1 - 8.4" - }, - "replace": { - "flow/jsonpath": "*" + "php": ">=5.6.0", + "yiisoft/yii2": ">=2.0.14 <2.1" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.58", - "phpunit/phpunit": "10 - 12", - "squizlabs/php_codesniffer": "^3.10" + "codeception/codeception": "2.0.*", + "codeception/specify": "*", + "codeception/verify": "*", + "flow/jsonpath": "^0.3", + "yiisoft/yii2-codeception": "*", + "yiisoft/yii2-debug": "*", + "yiisoft/yii2-faker": "*" }, - "type": "library", + "type": "yii2-extension", "autoload": { "psr-4": { - "Flow\\JSONPath\\": "src/" + "thamtech\\ratelimiter\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Stephen Frank", - "email": "stephen@flowsa.com", - "homepage": "https://prismaticbytes.com", - "role": "Developer" - }, - { - "name": "Sascha Greuel", - "email": "hello@1-2.dev", - "homepage": "https://1-2.dev", - "role": "Developer" + "name": "Tyler Ham", + "email": "tyler@thamtech.com" } ], - "description": "JSONPath implementation for parsing, searching and flattening arrays", + "description": "An advanced request rate limiter", "support": { - "email": "hello@1-2.dev", - "forum": "https://github.com/SoftCreatR/JSONPath/discussions", - "issues": "https://github.com/SoftCreatR/JSONPath/issues", - "source": "https://github.com/SoftCreatR/JSONPath" + "issues": "https://github.com/thamtech/yii2-ratelimiter-advanced/issues", + "source": "https://github.com/thamtech/yii2-ratelimiter-advanced/tree/master" }, - "funding": [ - { - "url": "https://ecologi.com/softcreatr?r=61212ab3fc69b8eb8a2014f4", - "type": "custom" - }, - { - "url": "https://github.com/softcreatr", - "type": "github" - } - ], - "time": "2025-03-22T00:28:17+00:00" + "time": "2020-08-05T04:29:29+00:00" }, { - "name": "staabm/side-effects-detector", - "version": "1.0.5", + "name": "theseer/tokenizer", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/staabm/side-effects-detector.git", - "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", - "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4", "shasum": "" }, "require": { + "ext-dom": "*", "ext-tokenizer": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.6", - "phpunit/phpunit": "^9.6.21", - "symfony/var-dumper": "^5.4.43", - "tomasvotruba/type-coverage": "1.0.0", - "tomasvotruba/unused-public": "1.0.0" + "ext-xmlwriter": "*", + "php": "^8.1" }, "type": "library", "autoload": { "classmap": [ - "lib/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "A static analysis tool to detect side effects in PHP code", - "keywords": [ - "static analysis" + "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/staabm/side-effects-detector/issues", - "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/2.0.1" }, "funding": [ { - "url": "https://github.com/staabm", + "url": "https://github.com/theseer", "type": "github" } ], - "time": "2024-10-20T05:08:20+00:00" + "time": "2025-12-08T11:19:18+00:00" }, { - "name": "symfony/browser-kit", - "version": "v7.4.14", + "name": "yiisoft/yii2", + "version": "2.0.55", "source": { "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "bb28e8761a6c33975972948010f00d4a10f0a634" + "url": "https://github.com/yiisoft/yii2-framework.git", + "reference": "b900eecdb225041a4c4e0f5e0e5336f606a23bdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/bb28e8761a6c33975972948010f00d4a10f0a634", - "reference": "bb28e8761a6c33975972948010f00d4a10f0a634", + "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/b900eecdb225041a4c4e0f5e0e5336f606a23bdb", + "reference": "b900eecdb225041a4c4e0f5e0e5336f606a23bdb", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/dom-crawler": "^6.4|^7.0|^8.0" - }, - "require-dev": { - "symfony/css-selector": "^6.4|^7.0|^8.0", - "symfony/http-client": "^6.4|^7.0|^8.0", - "symfony/mime": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0" + "bower-asset/inputmask": "^5.0.8 ", + "bower-asset/jquery": "3.7.*@stable | 3.6.*@stable | 3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", + "bower-asset/punycode": "^2.2", + "bower-asset/yii2-pjax": "~2.0.1", + "cebe/markdown": "~1.0.0 | ~1.1.0 | ~1.2.0", + "ext-ctype": "*", + "ext-mbstring": "*", + "ezyang/htmlpurifier": "^4.17", + "lib-pcre": "*", + "php": ">=7.4.0", + "yiisoft/yii2-composer": "~2.0.4" }, + "bin": [ + "yii" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "yii\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Qiang Xue", + "email": "qiang.xue@gmail.com", + "homepage": "https://www.yiiframework.com/", + "role": "Founder and project lead" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Alexander Makarov", + "email": "sam@rmcreative.ru", + "homepage": "https://rmcreative.ru/", + "role": "Core framework development" + }, + { + "name": "Maurizio Domba", + "homepage": "http://mdomba.info/", + "role": "Core framework development" + }, + { + "name": "Carsten Brandt", + "email": "mail@cebe.cc", + "homepage": "https://www.cebe.cc/", + "role": "Core framework development" + }, + { + "name": "Timur Ruziev", + "email": "resurtm@gmail.com", + "homepage": "http://resurtm.com/", + "role": "Core framework development" + }, + { + "name": "Paul Klimov", + "email": "klimov.paul@gmail.com", + "role": "Core framework development" + }, + { + "name": "Dmitry Naumenko", + "email": "d.naumenko.a@gmail.com", + "role": "Core framework development" + }, + { + "name": "Boudewijn Vahrmeijer", + "email": "info@dynasource.eu", + "homepage": "http://dynasource.eu", + "role": "Core framework development" } ], - "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", - "homepage": "https://symfony.com", + "description": "Yii PHP Framework Version 2", + "homepage": "https://www.yiiframework.com/", + "keywords": [ + "framework", + "yii2" + ], "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.4.14" + "forum": "https://forum.yiiframework.com/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/yii2/issues?state=open", + "source": "https://github.com/yiisoft/yii2", + "wiki": "https://www.yiiframework.com/wiki" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/yiisoft", "type": "github" }, { - "url": "https://github.com/nicolas-grekas", - "type": "github" + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2", "type": "tidelift" } ], - "time": "2026-06-08T20:24:16+00:00" + "time": "2026-05-09T14:50:57+00:00" }, { - "name": "symfony/console", - "version": "v7.4.14", + "name": "yiisoft/yii2-composer", + "version": "2.0.11", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87" + "url": "https://github.com/yiisoft/yii2-composer.git", + "reference": "b684b01ecb119c8287721def726a0e24fec2fef2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87", - "reference": "92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87", + "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/b684b01ecb119c8287721def726a0e24fec2fef2", + "reference": "b684b01ecb119c8287721def726a0e24fec2fef2", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2|^8.0" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" + "composer-plugin-api": "^1.0 | ^2.0" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/event-dispatcher": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/lock": "^6.4|^7.0|^8.0", - "symfony/messenger": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/stopwatch": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0" + "composer/composer": "^1.0 | ^2.0@dev", + "phpunit/phpunit": "<7" + }, + "type": "composer-plugin", + "extra": { + "class": "yii\\composer\\Plugin", + "branch-alias": { + "dev-master": "2.0.x-dev" + } }, - "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "yii\\composer\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Qiang Xue", + "email": "qiang.xue@gmail.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Carsten Brandt", + "email": "mail@cebe.cc" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", + "description": "The composer plugin for Yii extension installer", "keywords": [ - "cli", - "command-line", - "console", - "terminal" + "composer", + "extension installer", + "yii2" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.14" + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/yii2-composer/issues", + "source": "https://github.com/yiisoft/yii2-composer", + "wiki": "https://www.yiiframework.com/wiki/" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/yiisoft", "type": "github" }, { - "url": "https://github.com/nicolas-grekas", - "type": "github" + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-composer", "type": "tidelift" } ], - "time": "2026-06-16T11:50:14+00:00" + "time": "2025-02-13T20:59:36+00:00" }, { - "name": "symfony/finder", - "version": "v7.4.14", + "name": "yiisoft/yii2-debug", + "version": "2.1.27", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "13b38720174286f55d1761152b575a8d1436fc25" + "url": "https://github.com/yiisoft/yii2-debug.git", + "reference": "44e158914911ef81cd7111fd6d46b918f65fae7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/13b38720174286f55d1761152b575a8d1436fc25", - "reference": "13b38720174286f55d1761152b575a8d1436fc25", + "url": "https://api.github.com/repos/yiisoft/yii2-debug/zipball/44e158914911ef81cd7111fd6d46b918f65fae7c", + "reference": "44e158914911ef81cd7111fd6d46b918f65fae7c", "shasum": "" }, "require": { - "php": ">=8.2" + "ext-mbstring": "*", + "php": ">=5.4", + "yiisoft/yii2": "~2.0.13" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0|^8.0" + "cweagans/composer-patches": "^1.7", + "phpunit/phpunit": "4.8.34", + "yiisoft/yii2-coding-standards": "~2.0", + "yiisoft/yii2-swiftmailer": "*" + }, + "type": "yii2-extension", + "extra": { + "patches": { + "phpunit/phpunit": { + "Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch", + "Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch", + "Fix PHP 8.1 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php81.patch" + }, + "phpunit/phpunit-mock-objects": { + "Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch" + } + }, + "branch-alias": { + "dev-master": "2.0.x-dev" + }, + "composer-exit-on-patch-failure": true }, - "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "yii\\debug\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Qiang Xue", + "email": "qiang.xue@gmail.com" }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + { + "name": "Simon Karlen", + "email": "simi.albi@outlook.com" } ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", + "description": "The debugger extension for the Yii framework", + "keywords": [ + "debug", + "debugger", + "dev", + "yii2" + ], "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.14" + "forum": "https://www.yiiframework.com/forum/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/yii2-debug/issues", + "source": "https://github.com/yiisoft/yii2-debug", + "wiki": "https://www.yiiframework.com/wiki/" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/yiisoft", "type": "github" }, { - "url": "https://github.com/nicolas-grekas", - "type": "github" + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-debug", "type": "tidelift" } ], - "time": "2026-06-27T08:31:18+00:00" + "time": "2025-06-08T13:32:11+00:00" }, { - "name": "symplify/easy-coding-standard", - "version": "10.3.3", + "name": "yiisoft/yii2-queue", + "version": "2.3.8", "source": { "type": "git", - "url": "https://github.com/ecsphp/ecs.git", - "reference": "c93878b3c052321231519b6540e227380f90be17" + "url": "https://github.com/yiisoft/yii2-queue.git", + "reference": "e0f935e5b868d53347acfb14ec19faaf16085005" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ecsphp/ecs/zipball/c93878b3c052321231519b6540e227380f90be17", - "reference": "c93878b3c052321231519b6540e227380f90be17", + "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/e0f935e5b868d53347acfb14ec19faaf16085005", + "reference": "e0f935e5b868d53347acfb14ec19faaf16085005", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=5.5.0", + "symfony/process": "^3.3||^4.0||^5.0||^6.0||^7.0", + "yiisoft/yii2": "~2.0.14" }, - "conflict": { - "friendsofphp/php-cs-fixer": "<3.0", - "squizlabs/php_codesniffer": "<3.6" + "require-dev": { + "aws/aws-sdk-php": ">=2.4", + "cweagans/composer-patches": "^1.7", + "enqueue/amqp-lib": "^0.8||^0.9.10||^0.10.0", + "enqueue/stomp": "^0.8.39||0.10.19", + "opis/closure": "*", + "pda/pheanstalk": "~3.2.1", + "php-amqplib/php-amqplib": "^2.8.0||^3.0.0", + "phpunit/phpunit": "4.8.34", + "yiisoft/yii2-debug": "~2.1.0", + "yiisoft/yii2-gii": "~2.2.0", + "yiisoft/yii2-redis": "2.0.19" }, - "bin": [ - "bin/ecs" - ], - "type": "library", + "suggest": { + "aws/aws-sdk-php": "Need for aws SQS.", + "enqueue/amqp-lib": "Need for AMQP interop queue.", + "enqueue/stomp": "Need for Stomp queue.", + "ext-gearman": "Need for Gearman queue.", + "ext-pcntl": "Need for process signals.", + "pda/pheanstalk": "Need for Beanstalk queue.", + "php-amqplib/php-amqplib": "Need for AMQP queue.", + "yiisoft/yii2-redis": "Need for Redis queue." + }, + "type": "yii2-extension", "extra": { + "patches": { + "phpunit/phpunit": { + "Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch", + "Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch" + }, + "phpunit/phpunit-mock-objects": { + "Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch" + } + }, "branch-alias": { - "dev-main": "10.3-dev" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Prefixed scoped version of ECS package", - "support": { - "issues": "https://github.com/easy-coding-standard/ecs/issues", - "source": "https://github.com/easy-coding-standard/ecs/tree/10.3.3" - }, - "funding": [ - { - "url": "https://www.paypal.me/rectorphp", - "type": "custom" + "dev-master": "2.x-dev" }, - { - "url": "https://github.com/tomasvotruba", - "type": "github" - } - ], - "time": "2022-06-13T14:03:37+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", - "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" + "composer-exit-on-patch-failure": true }, - "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "yii\\queue\\": "src", + "yii\\queue\\db\\": "src/drivers/db", + "yii\\queue\\sqs\\": "src/drivers/sqs", + "yii\\queue\\amqp\\": "src/drivers/amqp", + "yii\\queue\\file\\": "src/drivers/file", + "yii\\queue\\sync\\": "src/drivers/sync", + "yii\\queue\\redis\\": "src/drivers/redis", + "yii\\queue\\stomp\\": "src/drivers/stomp", + "yii\\queue\\gearman\\": "src/drivers/gearman", + "yii\\queue\\beanstalk\\": "src/drivers/beanstalk", + "yii\\queue\\amqp_interop\\": "src/drivers/amqp_interop" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -12721,68 +16924,85 @@ ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "name": "Roman Zhuravlev", + "email": "zhuravljov@gmail.com" } ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "description": "Yii2 Queue Extension which supports queues based on DB, Redis, RabbitMQ, Beanstalk, SQS, and Gearman", + "keywords": [ + "async", + "beanstalk", + "db", + "gearman", + "gii", + "queue", + "rabbitmq", + "redis", + "sqs", + "yii" + ], "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.3.1" + "docs": "https://github.com/yiisoft/yii2-queue/blob/master/docs/guide", + "issues": "https://github.com/yiisoft/yii2-queue/issues", + "source": "https://github.com/yiisoft/yii2-queue" }, "funding": [ { - "url": "https://github.com/theseer", + "url": "https://github.com/yiisoft", "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-queue", + "type": "tidelift" } ], - "time": "2025-11-17T20:03:58+00:00" + "time": "2026-01-08T07:52:05+00:00" }, { - "name": "vlucas/phpdotenv", - "version": "v5.6.4", + "name": "yiisoft/yii2-symfonymailer", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "416df702837983f8d5ff48c9c3fee4f5f57b980b" + "url": "https://github.com/yiisoft/yii2-symfonymailer.git", + "reference": "21f407239c51fc6d50d369e4469d006afa8c9b2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/416df702837983f8d5ff48c9c3fee4f5f57b980b", - "reference": "416df702837983f8d5ff48c9c3fee4f5f57b980b", + "url": "https://api.github.com/repos/yiisoft/yii2-symfonymailer/zipball/21f407239c51fc6d50d369e4469d006afa8c9b2c", + "reference": "21f407239c51fc6d50d369e4469d006afa8c9b2c", "shasum": "" }, "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.4", - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.5", - "symfony/polyfill-ctype": "^1.26", - "symfony/polyfill-mbstring": "^1.26", - "symfony/polyfill-php80": "^1.26" + "php": ">=8.1", + "psr/event-dispatcher": "1.0.0", + "symfony/mailer": "^6.4 || ^7.0", + "symfony/mime": "^6.4 || ^7.0", + "yiisoft/yii2": ">=2.0.4" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-filter": "*", - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + "maglnet/composer-require-checker": "^4.7", + "phpunit/phpunit": "^10.5", + "roave/infection-static-analysis-plugin": "^1.34", + "symplify/easy-coding-standard": "^12.1", + "vimeo/psalm": "^5.20" }, "suggest": { - "ext-filter": "Required to use the boolean validator." + "yiisoft/yii2-psr-log-source": "Allows routing transport logs to your Yii2 logger" }, - "type": "library", + "type": "yii2-extension", "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, "branch-alias": { - "dev-master": "5.6-dev" - } + "dev-master": "3.0.x-dev" + }, + "sort-packages": true }, "autoload": { "psr-4": { - "Dotenv\\": "src/" + "yii\\symfonymailer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -12791,50 +17011,55 @@ ], "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" + "name": "Kirill Petrov", + "email": "archibeardrinker@gmail.com" } ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "description": "The SymfonyMailer integration for the Yii framework", "keywords": [ - "dotenv", - "env", - "environment" + "email", + "mail", + "mailer", + "symfony", + "symfonymailer", + "yii2" ], "support": { - "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.4" + "forum": "http://www.yiiframework.com/forum/", + "irc": "irc://irc.freenode.net/yii", + "issues": "https://github.com/yiisoft/yii2-symfonymailer/issues", + "source": "https://github.com/yiisoft/yii2-symfonymailer", + "wiki": "http://www.yiiframework.com/wiki/" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", + "url": "https://github.com/yiisoft", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-symfonymailer", "type": "tidelift" } ], - "time": "2026-07-06T19:11:50+00:00" + "time": "2024-01-29T14:13:45+00:00" } ], "aliases": [], "minimum-stability": "dev", "stability-flags": { + "craftcms/cms": 20, + "craftcms/cms-assets": 20, "craftcms/ecs": 20, - "craftcms/phpstan": 20, - "craftcms/rector": 20 + "craftcms/yii2-adapter": 20 }, "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.2" + "php": "^8.5" }, "platform-dev": {}, "plugin-api-version": "2.9.0" diff --git a/crowdin.yml b/crowdin.yml index 33f84c38e0..442f8df6cd 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,6 +1,6 @@ project_identifier: craft-commerce api_key_env: CROWDIN_API_KEY -base_path: /src/translations +base_path: /lang preserve_hierarchy: true files: - source: /en/commerce.php diff --git a/database/migrations/2026_10_01_000000_change_order_status_color_to_palette.php b/database/migrations/2026_10_01_000000_change_order_status_color_to_palette.php new file mode 100644 index 0000000000..192fca923d --- /dev/null +++ b/database/migrations/2026_10_01_000000_change_order_status_color_to_palette.php @@ -0,0 +1,49 @@ + + */ + private const array COLOR_MAP = [ + 'turquoise' => 'teal', + 'grey' => 'gray', + 'light' => 'white', + ]; + + public function up(): void + { + if (DB::getDriverName() === 'pgsql') { + DB::statement(sprintf('ALTER TABLE %s DROP CONSTRAINT IF EXISTS %s', DB::getTablePrefix() . Table::ORDERSTATUSES, DB::getTablePrefix() . Table::ORDERSTATUSES . '_color_check')); + } + + Schema::table(Table::ORDERSTATUSES, function(Blueprint $table) { + $table->string('color')->default(Color::Green->value)->change(); + }); + + foreach (self::COLOR_MAP as $legacy => $color) { + DB::table(Table::ORDERSTATUSES)->where('color', $legacy)->update(['color' => $color]); + } + + foreach (ProjectConfig::get(OrderStatuses::CONFIG_STATUSES_KEY) ?? [] as $uid => $config) { + $color = $config['color'] ?? null; + + if (isset(self::COLOR_MAP[$color])) { + ProjectConfig::set(OrderStatuses::CONFIG_STATUSES_KEY . ".$uid.color", self::COLOR_MAP[$color]); + } + } + } +}; diff --git a/database/migrations/2026_10_01_000001_change_line_item_status_color_to_palette.php b/database/migrations/2026_10_01_000001_change_line_item_status_color_to_palette.php new file mode 100644 index 0000000000..351d8a118b --- /dev/null +++ b/database/migrations/2026_10_01_000001_change_line_item_status_color_to_palette.php @@ -0,0 +1,49 @@ + + */ + private const array COLOR_MAP = [ + 'turquoise' => 'teal', + 'grey' => 'gray', + 'light' => 'white', + ]; + + public function up(): void + { + if (DB::getDriverName() === 'pgsql') { + DB::statement(sprintf('ALTER TABLE %s DROP CONSTRAINT IF EXISTS %s', DB::getTablePrefix() . Table::LINEITEMSTATUSES, DB::getTablePrefix() . Table::LINEITEMSTATUSES . '_color_check')); + } + + Schema::table(Table::LINEITEMSTATUSES, function(Blueprint $table) { + $table->string('color')->default(Color::Green->value)->change(); + }); + + foreach (self::COLOR_MAP as $legacy => $color) { + DB::table(Table::LINEITEMSTATUSES)->where('color', $legacy)->update(['color' => $color]); + } + + foreach (ProjectConfig::get(LineItemStatuses::CONFIG_STATUSES_KEY) ?? [] as $uid => $config) { + $color = $config['color'] ?? null; + + if (isset(self::COLOR_MAP[$color])) { + ProjectConfig::set(LineItemStatuses::CONFIG_STATUSES_KEY . ".$uid.color", self::COLOR_MAP[$color]); + } + } + } +}; diff --git a/database/migrations/Install.php b/database/migrations/Install.php new file mode 100644 index 0000000000..800b83ded2 --- /dev/null +++ b/database/migrations/Install.php @@ -0,0 +1,1432 @@ +silent) { + $callback(); + + return; + } + + PromptTask::run( + label: str($label)->finish('...')->toString(), + callback: function (Logger $logger) use ($callback, $label) { + $callback($logger); + $logger->label($label); + }, + keepSummary: true, + output: $this->output, + ); + } + + public function up(): void + { + $this->task('Install Craft Commerce', function (?Logger $logger = null) { + $logger?->subLabel('Creating tables...'); + $this->createTables(); + $logger?->success('Tables created.'); + + $logger?->subLabel('Creating indexes...'); + $this->createIndexes(); + $logger?->success('Indexes created.'); + + $logger?->subLabel('Adding foreign keys...'); + $this->addForeignKeys(); + $logger?->success('Foreign keys added.'); + }); + + $this->task('Seed default Craft Commerce data', function (?Logger $logger = null) { + $this->insertDefaultData(); + $logger?->success('Default data seeded.'); + }); + } + + /** + * Creates the tables for Craft Commerce. + */ + public function createTables(): void + { + Schema::create(Table::CATALOG_PRICING_RULES, function (Blueprint $table) { + $table->integer('id', true); + $table->string('name'); + $table->text('description')->nullable(); + $table->integer('storeId'); + $table->dateTime('dateFrom')->nullable(); + $table->dateTime('dateTo')->nullable(); + $table->enum('apply', ['toPercent', 'toFlat', 'byPercent', 'byFlat']); + $table->decimal('applyAmount', 14, 4); + $table->enum('applyPriceType', [CatalogPricingRule::APPLY_PRICE_TYPE_PRICE, CatalogPricingRule::APPLY_PRICE_TYPE_PROMOTIONAL_PRICE]); + $table->text('productCondition')->nullable(); + $table->text('variantCondition')->nullable(); + $table->text('purchasableCondition')->nullable(); + $table->text('customerCondition')->nullable(); + $table->boolean('enabled')->default(true); + $table->boolean('isPromotionalPrice')->default(false); + $table->text('metadata')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::CATALOG_PRICING_RULES_USERS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('catalogPricingRuleId'); + $table->integer('userId'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::CATALOG_PRICING, function (Blueprint $table) { + $table->integer('id', true); + $table->decimal('price', 14, 4)->nullable(); // @TODO Consider storing as string to avoid float-precision issues + $table->integer('purchasableId'); + $table->integer('storeId')->nullable(); + $table->integer('catalogPricingRuleId')->nullable(); + $table->integer('userId')->nullable(); + $table->dateTime('dateFrom')->nullable(); + $table->dateTime('dateTo')->nullable(); + $table->boolean('isPromotionalPrice')->default(false)->nullable(); + $table->boolean('hasUpdatePending')->default(false)->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::CATALOG_PRICING_QUEUE, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId')->nullable(); + $table->enum('type', [CatalogPricingQueue::TYPE_PURCHASABLE, CatalogPricingQueue::TYPE_RULE]); + $table->mediumText('ids')->nullable(); + $table->boolean('reserved')->default(false); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::CUSTOMERS, function (Blueprint $table) { + $table->integer('id', true); // Not used in v4 but is the old customerId + $table->integer('customerId'); // This is the User element ID + $table->integer('primaryBillingAddressId')->nullable(); + $table->integer('primaryShippingAddressId')->nullable(); + $table->integer('primaryPaymentSourceId')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::COUPONS, function (Blueprint $table) { + $table->integer('id', true); + $table->string('code')->nullable(); + $table->integer('discountId'); + $table->integer('uses')->default(0); + $table->integer('maxUses')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::CUSTOMER_DISCOUNTUSES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('discountId'); + $table->integer('customerId'); + $table->unsignedInteger('uses'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::EMAIL_DISCOUNTUSES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('discountId'); + $table->string('email'); + $table->unsignedInteger('uses'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::DISCOUNT_PURCHASABLES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('discountId'); + $table->integer('purchasableId'); + $table->string('purchasableType'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + // @TODO Rename to `discount_entries` table in Commerce 6.0, or remove if the purchasable condition builder fully replaces it + Schema::create(Table::DISCOUNT_CATEGORIES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('discountId'); + $table->integer('categoryId'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::DISCOUNTS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId'); + $table->string('name'); + $table->text('description')->nullable(); + $table->string('couponFormat', 20)->default(Coupons::DEFAULT_COUPON_FORMAT); + $table->text('orderCondition')->nullable(); + $table->text('customerCondition')->nullable(); + $table->text('shippingAddressCondition')->nullable(); + $table->text('billingAddressCondition')->nullable(); + $table->boolean('requireCouponCode')->default(false); + $table->unsignedInteger('perUserLimit')->default(0); + $table->unsignedInteger('perEmailLimit')->default(0); + $table->unsignedInteger('totalDiscountUses')->default(0); + $table->unsignedInteger('totalDiscountUseLimit')->default(0); + $table->dateTime('dateFrom')->nullable(); + $table->dateTime('dateTo')->nullable(); + $table->integer('purchaseQty')->default(0); + $table->decimal('purchaseTotal', 14, 4)->default(0); + $table->integer('maxPurchaseQty')->default(0); + $table->decimal('baseDiscount', 14, 4)->default(0); + $table->decimal('perItemDiscount', 14, 4)->default(0); + $table->decimal('percentDiscount', 14, 4)->default(0); + $table->enum('percentageOffSubject', ['original', 'discounted']); + $table->boolean('excludeOnPromotion')->default(false); + $table->boolean('hasFreeShippingForMatchingItems')->default(false); + $table->boolean('hasFreeShippingForOrder')->default(false); + $table->boolean('allPurchasables')->default(false); + $table->text('purchasableIds')->nullable(); + $table->boolean('allCategories')->default(false); + $table->text('categoryIds')->nullable(); + $table->enum('appliedTo', ['matchingLineItems', 'allLineItems'])->default('matchingLineItems'); + $table->enum('categoryRelationshipType', ['element', 'sourceElement', 'targetElement'])->default('element'); + $table->text('orderConditionFormula')->nullable(); + $table->boolean('enabled')->default(true); + $table->boolean('stopProcessing')->default(false); + $table->boolean('ignorePromotions')->default(false); + $table->integer('sortOrder')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::DONATIONS, function (Blueprint $table) { + $table->integer('id', true); + $table->string('sku'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::EMAILS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId')->nullable(); + $table->string('name'); + $table->string('senderAddress')->nullable(); + $table->string('senderName')->nullable(); + $table->string('subject'); + $table->enum('recipientType', ['customer', 'custom'])->default('custom')->nullable(); + $table->string('to')->nullable(); + $table->string('bcc')->nullable(); + $table->string('cc')->nullable(); + $table->string('replyTo')->nullable(); + $table->boolean('enabled')->default(true); + $table->string('templatePath'); + $table->string('plainTextTemplatePath')->nullable(); + $table->integer('pdfId')->nullable(); + $table->string('language')->nullable(); + $table->integer('renderSiteId')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::PDFS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId')->nullable(); + $table->string('name'); + $table->string('handle'); + $table->string('description')->nullable(); + $table->string('templatePath'); + $table->string('fileNameFormat')->nullable(); + $table->string('paperOrientation')->default('portrait')->nullable(); + $table->string('paperSize')->default('letter')->nullable(); + $table->boolean('enabled')->default(true); + $table->boolean('isDefault')->default(false); + $table->integer('sortOrder')->nullable(); + $table->string('language')->nullable(); + $table->integer('linkExpiry')->default(86400); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::GATEWAYS, function (Blueprint $table) { + $table->integer('id', true); + $table->string('type'); + $table->string('name'); + $table->string('handle'); + $table->text('settings')->nullable(); + $table->enum('paymentType', ['authorize', 'purchase'])->default('purchase'); + $table->string('isFrontendEnabled', 500)->default('1'); + $table->text('orderCondition')->nullable(); + $table->text('shippingAddressCondition')->nullable(); + $table->text('billingAddressCondition')->nullable(); + $table->boolean('isArchived')->default(false); + $table->dateTime('dateArchived')->nullable(); + $table->integer('sortOrder')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::INVENTORYITEMS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('purchasableId'); + $table->string('countryCodeOfOrigin')->nullable(); + $table->string('administrativeAreaCodeOfOrigin')->nullable(); + $table->string('harmonizedSystemCode')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::INVENTORYLOCATIONS, function (Blueprint $table) { + $table->integer('id', true); + $table->string('handle'); + $table->string('name'); + $table->integer('addressId')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->dateTime('dateDeleted')->nullable(); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::INVENTORYLOCATIONS_STORES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('inventoryLocationId'); + $table->integer('storeId'); + $table->integer('sortOrder')->nullable(); // per store + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::INVENTORYTRANSACTIONS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('inventoryLocationId'); + $table->integer('inventoryItemId'); + $table->string('movementHash'); + $table->integer('quantity'); + $table->enum('type', [ + 'incoming', + 'available', + 'committed', + 'reserved', + 'damaged', + 'safety', + 'fulfilled', + 'qualityControl', + ]); + $table->string('note')->nullable(); + $table->integer('transferId')->nullable(); // Can be null + $table->integer('lineItemId')->nullable(); // Can be null + $table->integer('userId')->nullable(); // Can be null + $table->dateTime('dateCreated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::LINEITEMS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('orderId'); + $table->enum('type', ['purchasable', 'custom'])->default('purchasable'); + $table->integer('purchasableId')->nullable(); + $table->integer('taxCategoryId'); + $table->integer('shippingCategoryId'); + $table->text('description')->nullable(); + $table->text('options')->nullable(); + $table->string('optionsSignature'); + $table->decimal('price', 14, 4)->unsigned(); + $table->decimal('promotionalPrice', 14, 4)->unsigned()->nullable(); + $table->decimal('promotionalAmount', 14, 4)->default(0); + $table->decimal('salePrice', 14, 4)->default(0); + $table->string('sku')->nullable(); + $table->decimal('weight', 14, 4)->default(0)->unsigned(); + $table->decimal('height', 14, 4)->default(0)->unsigned(); + $table->decimal('length', 14, 4)->default(0)->unsigned(); + $table->decimal('width', 14, 4)->default(0)->unsigned(); + $table->decimal('subtotal', 14, 4)->default(0)->unsigned(); + $table->decimal('total', 14, 4)->default(0); + $table->unsignedInteger('qty'); + $table->text('note')->nullable(); + $table->text('privateNote')->nullable(); + $table->boolean('hasFreeShipping')->nullable(); + $table->boolean('isPromotable')->nullable(); + $table->boolean('isShippable')->nullable(); + $table->boolean('isTaxable')->nullable(); + $table->longText('snapshot')->nullable(); + $table->integer('lineItemStatusId')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::LINEITEMSTATUSES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId')->nullable(); + $table->string('name'); + $table->string('handle'); + $table->string('color')->default('green'); + $table->boolean('isArchived')->default(false); + $table->dateTime('dateArchived')->nullable(); + $table->integer('sortOrder')->nullable(); + $table->boolean('default')->default(false); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::ORDERADJUSTMENTS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('orderId'); + $table->integer('lineItemId')->nullable(); + $table->string('type'); + $table->string('name')->nullable(); + $table->string('description')->nullable(); + $table->decimal('amount', 14, 4); + $table->boolean('included')->default(false); + $table->boolean('isEstimated')->default(false); + $table->longText('sourceSnapshot')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::ORDERNOTICES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('orderId'); + $table->string('type')->nullable(); + $table->string('attribute')->nullable(); + $table->text('message')->nullable(); + $table->string('noticeType')->default('customer'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::ORDERHISTORIES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('orderId'); + $table->integer('userId')->nullable(); + $table->string('userName')->nullable(); + $table->integer('prevStatusId')->nullable(); + $table->integer('newStatusId')->nullable(); + $table->text('message')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::ORDERS, function (Blueprint $table) { + $table->integer('id'); + $table->integer('storeId'); + $table->integer('billingAddressId')->nullable(); + $table->integer('shippingAddressId')->nullable(); + $table->integer('estimatedBillingAddressId')->nullable(); + $table->integer('estimatedShippingAddressId')->nullable(); + $table->integer('sourceShippingAddressId')->nullable(); + $table->integer('sourceBillingAddressId')->nullable(); + $table->integer('gatewayId')->nullable(); + $table->integer('paymentSourceId')->nullable(); + $table->integer('customerId')->nullable(); // Customer ID is a User element ID + $table->boolean('customerDeleted')->default(false); + $table->integer('orderStatusId')->nullable(); + $table->string('number', 32)->nullable(); + $table->string('reference')->nullable(); + $table->string('couponCode')->nullable(); + $table->decimal('itemTotal', 14, 4)->default(0)->nullable(); + $table->decimal('itemSubtotal', 14, 4)->default(0)->nullable(); + $table->unsignedInteger('totalQty')->nullable(); + $table->decimal('totalWeight', 14, 4)->default(0)->unsigned()->nullable(); + $table->decimal('total', 14, 4)->default(0)->nullable(); + $table->decimal('totalPrice', 14, 4)->default(0)->nullable(); + $table->decimal('totalPaid', 14, 4)->default(0)->nullable(); + $table->decimal('totalDiscount', 14, 4)->default(0)->nullable(); + $table->decimal('totalTax', 14, 4)->default(0)->nullable(); + $table->decimal('totalTaxIncluded', 14, 4)->default(0)->nullable(); + $table->decimal('totalShippingCost', 14, 4)->default(0)->nullable(); + $table->enum('paidStatus', ['paid', 'partial', 'unpaid', 'overPaid'])->nullable(); + $table->string('email')->nullable(); + $table->string('orderCompletedEmail')->nullable(); + $table->boolean('isCompleted')->default(false); + $table->dateTime('dateOrdered')->nullable(); + $table->dateTime('datePaid')->nullable(); + $table->dateTime('dateFirstPaid')->nullable(); + $table->dateTime('dateAuthorized')->nullable(); + $table->string('currency')->nullable(); + $table->string('paymentCurrency')->nullable(); + $table->string('lastIp')->nullable(); + $table->string('orderLanguage', 12); + $table->enum('origin', ['web', 'cp', 'remote'])->default('web'); + $table->text('message')->nullable(); + $table->boolean('registerUserOnOrderComplete')->default(false); + $table->boolean('saveBillingAddressOnOrderComplete')->default(false); + $table->boolean('makePrimaryBillingAddress')->default(false); + $table->boolean('saveShippingAddressOnOrderComplete')->default(false); + $table->boolean('makePrimaryShippingAddress')->default(false); + $table->enum('recalculationMode', ['all', 'none', 'adjustmentsOnly'])->default('all'); + $table->text('returnUrl')->nullable(); + $table->text('cancelUrl')->nullable(); + $table->string('shippingMethodHandle')->default(''); + $table->string('shippingMethodName')->default(''); + $table->integer('orderSiteId')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + $table->primary('id'); + }); + + Schema::create(Table::ORDERSTATUS_EMAILS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('orderStatusId'); + $table->integer('emailId'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::ORDERSTATUSES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId')->nullable(); + $table->string('name'); + $table->string('handle'); + $table->string('color')->default('green'); + $table->string('description')->nullable(); + $table->dateTime('dateDeleted')->nullable(); + $table->integer('sortOrder')->nullable(); + $table->boolean('default')->default(false); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::PAYMENTCURRENCIES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId'); + $table->string('iso', 3); + $table->boolean('primary')->default(false); + $table->decimal('rate', 14, 4)->default(0); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::PAYMENTSOURCES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('customerId'); + $table->integer('gatewayId'); + $table->string('token'); + $table->string('description')->nullable(); + $table->text('response')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::PLANS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('gatewayId')->nullable(); + $table->integer('planInformationId')->nullable(); + $table->string('name'); + $table->string('handle'); + $table->string('reference'); + $table->boolean('enabled')->default(false); + $table->text('planData')->nullable(); + $table->boolean('isArchived')->default(false); + $table->dateTime('dateArchived')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->integer('sortOrder')->nullable(); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::PRODUCTS, function (Blueprint $table) { + $table->integer('id'); + $table->integer('typeId')->nullable(); + $table->integer('defaultVariantId')->nullable(); + $table->dateTime('postDate')->nullable(); + $table->dateTime('expiryDate')->nullable(); + $table->string('defaultSku')->nullable(); + $table->decimal('defaultPrice', 14, 4)->nullable(); + $table->decimal('defaultHeight', 14, 4)->nullable(); + $table->decimal('defaultLength', 14, 4)->nullable(); + $table->decimal('defaultWidth', 14, 4)->nullable(); + $table->decimal('defaultWeight', 14, 4)->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + $table->primary('id'); + }); + + Schema::create(Table::PRODUCTTYPES, function (Blueprint $table) { + $table->integer('id', true); + $table->boolean('isStructure')->default(false); + $table->unsignedSmallInteger('maxLevels')->nullable(); + $table->enum('defaultPlacement', [ProductType::DEFAULT_PLACEMENT_BEGINNING, ProductType::DEFAULT_PLACEMENT_END])->default('end'); + $table->integer('structureId')->nullable(); + $table->integer('fieldLayoutId')->nullable(); + $table->integer('variantFieldLayoutId')->nullable(); + $table->string('name'); + $table->string('handle'); + $table->boolean('enableVersioning')->default(false); + $table->integer('maxVariants')->nullable(); + $table->boolean('hasDimensions')->default(false); + + // Variant title stuff + $table->boolean('hasVariantTitleField')->default(true); + $table->string('variantTitleFormat'); + $table->string('variantTitleTranslationMethod')->default('site'); + $table->string('variantTitleTranslationKeyFormat')->nullable(); + $table->string('variantUiLabelFormat')->default('{title}'); + + // Product title stuff + $table->boolean('hasProductTitleField')->default(true); + $table->string('productTitleFormat')->nullable(); + $table->string('productTitleTranslationMethod')->default('site'); + $table->string('productTitleTranslationKeyFormat')->nullable(); + $table->string('productUiLabelFormat')->default('{title}'); + + // Slug stuff + $table->boolean('showSlugField')->default(true); + $table->string('slugTranslationMethod')->default('site'); + $table->string('slugTranslationKeyFormat')->nullable(); + + $table->string('propagationMethod')->default(PropagationMethod::All->value); + $table->json('previewTargets')->nullable(); + + $table->string('skuFormat')->nullable(); + $table->string('descriptionFormat')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::PRODUCTTYPES_SITES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('productTypeId'); + $table->integer('siteId'); + $table->text('uriFormat')->nullable(); + $table->string('template', 500)->nullable(); + $table->boolean('hasUrls')->default(false); + $table->boolean('enabledByDefault')->default(true); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::PRODUCTTYPES_SHIPPINGCATEGORIES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('productTypeId'); + $table->integer('shippingCategoryId'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::PRODUCTTYPES_TAXCATEGORIES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('productTypeId'); + $table->integer('taxCategoryId'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::PURCHASABLES, function (Blueprint $table) { + $table->integer('id', true); + $table->string('sku'); + $table->text('description')->nullable(); + $table->decimal('width', 14, 4)->nullable(); + $table->decimal('height', 14, 4)->nullable(); + $table->decimal('length', 14, 4)->nullable(); + $table->decimal('weight', 14, 4)->nullable(); + $table->integer('taxCategoryId'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::PURCHASABLES_STORES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('purchasableId'); + $table->integer('storeId'); + $table->decimal('basePrice', 14, 4)->nullable(); // @TODO Consider storing as string to avoid float-precision issues + $table->decimal('basePromotionalPrice', 14, 4)->nullable(); // @TODO Consider storing as string to avoid float-precision issues + $table->boolean('promotable')->default(false); + $table->boolean('availableForPurchase')->default(true); + $table->boolean('freeShipping')->default(true); + $table->boolean('inventoryTracked')->default(true); + $table->boolean('allowOutOfStockPurchases')->default(false); + $table->integer('stock')->nullable(); // This is a summary value used for searching and sorting + $table->boolean('tracked')->default(false); + $table->integer('minQty')->nullable(); + $table->integer('maxQty')->nullable(); + $table->integer('shippingCategoryId')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::SALE_PURCHASABLES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('saleId'); + $table->integer('purchasableId'); + $table->string('purchasableType'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + // @TODO Rename to `sale_entries` table in Commerce 6.0, or remove if the purchasable condition builder fully replaces it + Schema::create(Table::SALE_CATEGORIES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('saleId'); + $table->integer('categoryId'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::SALE_USERGROUPS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('saleId'); + $table->integer('userGroupId'); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::SALES, function (Blueprint $table) { + $table->integer('id', true); + $table->string('name'); + $table->text('description')->nullable(); + $table->dateTime('dateFrom')->nullable(); + $table->dateTime('dateTo')->nullable(); + $table->enum('apply', ['toPercent', 'toFlat', 'byPercent', 'byFlat']); + $table->decimal('applyAmount', 14, 4); + $table->boolean('allGroups')->default(false); + $table->boolean('allPurchasables')->default(false); + $table->boolean('allCategories')->default(false); + $table->enum('categoryRelationshipType', ['element', 'sourceElement', 'targetElement'])->default('element'); + $table->boolean('enabled')->default(true); + $table->boolean('ignorePrevious')->default(false); + $table->boolean('stopProcessing')->default(false); + $table->integer('sortOrder')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::SHIPPINGCATEGORIES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId'); + $table->string('name'); + $table->string('handle'); + $table->string('icon')->nullable(); + $table->string('color')->nullable(); + $table->string('description')->nullable(); + $table->boolean('default')->default(false); + $table->dateTime('dateDeleted')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::SHIPPINGMETHODS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId'); + $table->string('name'); + $table->string('handle'); + $table->string('icon')->nullable(); + $table->string('color')->nullable(); + $table->text('orderCondition')->nullable(); + $table->text('customerCondition')->nullable(); + $table->boolean('enabled')->default(true); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::SHIPPINGRULE_CATEGORIES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('shippingRuleId')->nullable(); + $table->integer('shippingCategoryId')->nullable(); + $table->enum('condition', ['allow', 'disallow', 'require']); + $table->decimal('perItemRate', 14, 4)->nullable(); + $table->decimal('weightRate', 14, 4)->nullable(); + $table->decimal('percentageRate', 14, 4)->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::SHIPPINGRULES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('methodId'); + $table->string('name'); + $table->string('description')->nullable(); + $table->integer('priority')->default(0); + $table->boolean('enabled')->default(true); + $table->text('orderConditionFormula')->nullable(); + $table->text('orderCondition')->nullable(); + $table->text('customerCondition')->nullable(); + $table->decimal('baseRate', 14, 4)->default(0); + $table->decimal('perItemRate', 14, 4)->default(0); + $table->decimal('weightRate', 14, 4)->default(0); + $table->decimal('percentageRate', 14, 4)->default(0); + $table->decimal('minRate', 14, 4)->default(0); + $table->decimal('maxRate', 14, 4)->default(0); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::SHIPPINGZONES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId')->nullable(); + $table->string('name'); + $table->string('description')->nullable(); + $table->text('condition')->nullable(); + $table->boolean('default')->default(false); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::SITESTORES, function (Blueprint $table) { + $table->integer('siteId'); + $table->integer('storeId')->nullable(); // defaults to primary store in app + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + $table->primary('siteId'); + }); + + Schema::create(Table::STORES, function (Blueprint $table) { + $table->integer('id', true); + $table->string('name'); + $table->string('handle'); + $table->boolean('primary'); + $table->string('currency')->default('USD'); + $table->string('autoSetCartShippingMethodOption')->default('false'); + $table->string('autoSetNewCartAddresses')->default('false'); + $table->string('autoSetPaymentSource')->default('false'); + $table->string('allowEmptyCartOnCheckout')->default('false'); + $table->string('allowCheckoutWithoutPayment')->default('false'); + $table->string('allowPartialPaymentOnCheckout')->default('false'); + $table->string('requireShippingAddressAtCheckout')->default('false'); + $table->string('requireBillingAddressAtCheckout')->default('false'); + $table->string('requireShippingMethodSelectionAtCheckout')->default('false'); + $table->string('useBillingAddressForTax')->default('false'); + $table->string('validateOrganizationTaxIdAsVatId')->default('false'); + $table->string('orderReferenceFormat')->nullable(); + $table->string('freeOrderPaymentStrategy')->default('complete')->nullable(); + $table->string('minimumTotalPriceStrategy')->default('default')->nullable(); + $table->integer('sortOrder')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::STORESETTINGS, function (Blueprint $table) { + $table->integer('id'); + $table->integer('locationAddressId')->nullable(); + $table->text('countries')->nullable(); + $table->text('marketAddressCondition')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + $table->primary('id'); + }); + + Schema::create(Table::SUBSCRIPTIONS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('userId'); + $table->integer('planId')->nullable(); + $table->integer('gatewayId')->nullable(); + $table->integer('orderId')->nullable(); + $table->string('reference'); + $table->text('subscriptionData')->nullable(); + $table->integer('trialDays'); + $table->dateTime('nextPaymentDate')->nullable(); + $table->boolean('hasStarted')->default(true); + $table->boolean('isSuspended')->default(false); + $table->dateTime('dateSuspended')->nullable(); + $table->boolean('isCanceled')->default(false); + $table->dateTime('dateCanceled')->nullable(); + $table->boolean('isExpired')->default(false); + $table->text('returnUrl')->nullable(); + $table->dateTime('dateExpired')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::TAXCATEGORIES, function (Blueprint $table) { + $table->integer('id', true); + $table->string('name'); + $table->string('handle'); + $table->string('icon')->nullable(); + $table->string('color')->nullable(); + $table->string('description')->nullable(); + $table->boolean('default')->default(false); + $table->dateTime('dateDeleted')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::TAXRATES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId'); + $table->integer('taxZoneId')->nullable(); + $table->boolean('isEverywhere')->default(true); + $table->integer('taxCategoryId')->nullable(); + $table->string('name'); + $table->string('code')->nullable(); + $table->decimal('rate', 14, 10); + $table->boolean('include')->default(false); + $table->boolean('isVat')->default(false); // @TODO Remove in Commerce 6.0 + $table->text('taxIdValidators')->nullable(); + $table->boolean('removeIncluded')->default(false); + $table->boolean('removeVatIncluded')->default(false); + $table->enum('taxable', ['purchasable', 'price', 'shipping', 'price_shipping', 'order_total_shipping', 'order_total_price']); + $table->boolean('enabled')->default(true); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::TAXZONES, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('storeId'); + $table->string('name'); + $table->string('description')->nullable(); + $table->text('condition')->nullable(); + $table->boolean('default')->default(false); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::TRANSACTIONS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('orderId'); + $table->integer('parentId')->nullable(); + $table->integer('gatewayId')->nullable(); + $table->integer('userId')->nullable(); // Stays as userId since it could be a logged-in user or store administrator. So not just a customer. + $table->string('hash', 32)->nullable(); + $table->enum('type', ['authorize', 'capture', 'purchase', 'refund']); + $table->decimal('amount', 14, 4)->nullable(); + $table->decimal('paymentAmount', 14, 4)->nullable(); + $table->string('currency')->nullable(); + $table->string('paymentCurrency')->nullable(); + $table->decimal('paymentRate', 14, 4)->nullable(); + $table->enum('status', ['pending', 'redirect', 'success', 'failed', 'processing']); + $table->string('reference')->nullable(); + $table->string('code')->nullable(); + $table->text('message')->nullable(); + $table->mediumText('note')->nullable(); + $table->text('response')->nullable(); + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::TRANSFERS, function (Blueprint $table) { + $table->integer('id', true); + $table->enum('transferStatus', [ + 'draft', + 'pending', + 'partial', + 'received', + ]); + $table->integer('originLocationId')->nullable(); + $table->integer('destinationLocationId')->nullable(); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::TRANSFERDETAILS, function (Blueprint $table) { + $table->integer('id', true); + $table->integer('transferId'); + $table->integer('inventoryItemId')->nullable(); + $table->string('inventoryItemDescription'); + $table->integer('quantity'); + $table->integer('quantityAccepted'); + $table->integer('quantityRejected'); + $table->char('uid', 36)->default('0'); + }); + + Schema::create(Table::VARIANTS, function (Blueprint $table) { + $table->integer('id'); + $table->integer('primaryOwnerId')->nullable(); + $table->boolean('isDefault')->default(false); + $table->boolean('deletedWithProduct')->default(false); // @TODO Remove in Commerce 6.0 + $table->dateTime('dateCreated'); + $table->dateTime('dateUpdated'); + $table->char('uid', 36)->default('0'); + $table->primary('id'); + }); + } + + /** + * Creates the indexes. + */ + public function createIndexes(): void + { + Schema::createIndex(Table::CATALOG_PRICING, ['catalogPricingRuleId']); + Schema::createIndex(Table::CATALOG_PRICING, ['isPromotionalPrice']); + Schema::createIndex(Table::CATALOG_PRICING, ['purchasableId']); + Schema::createIndex(Table::CATALOG_PRICING, ['storeId']); + Schema::createIndex(Table::CATALOG_PRICING, ['userId']); + Schema::createIndex(Table::CATALOG_PRICING, ['purchasableId', 'storeId', 'isPromotionalPrice', 'price', 'catalogPricingRuleId', 'dateFrom', 'dateTo']); + Schema::createIndex(Table::CATALOG_PRICING, ['purchasableId', 'storeId', 'isPromotionalPrice', 'price']); + Schema::createIndex(Table::CATALOG_PRICING, ['purchasableId', 'storeId']); + Schema::createIndex(Table::CATALOG_PRICING_QUEUE, ['reserved']); + Schema::createIndex(Table::CATALOG_PRICING_QUEUE, ['storeId', 'type', 'reserved']); + Schema::createIndex(Table::CATALOG_PRICING_RULES, ['storeId']); + Schema::createIndex(Table::CATALOG_PRICING_RULES_USERS, ['catalogPricingRuleId']); + Schema::createIndex(Table::CATALOG_PRICING_RULES_USERS, ['userId']); + Schema::createIndex(Table::COUPONS, ['code']); + Schema::createIndex(Table::COUPONS, ['discountId']); + Schema::createIndex(Table::CUSTOMERS, ['customerId'], unique: true); + Schema::createIndex(Table::CUSTOMERS, ['primaryBillingAddressId']); + Schema::createIndex(Table::CUSTOMERS, ['primaryPaymentSourceId']); + Schema::createIndex(Table::CUSTOMERS, ['primaryShippingAddressId']); + Schema::createIndex(Table::CUSTOMER_DISCOUNTUSES, ['discountId']); + Schema::createIndex(Table::CUSTOMER_DISCOUNTUSES, ['customerId', 'discountId'], unique: true); + Schema::createIndex(Table::DISCOUNTS, ['dateFrom']); + Schema::createIndex(Table::DISCOUNTS, ['dateTo']); + Schema::createIndex(Table::DISCOUNT_CATEGORIES, ['categoryId']); + Schema::createIndex(Table::DISCOUNT_CATEGORIES, ['discountId', 'categoryId'], unique: true); + Schema::createIndex(Table::DISCOUNT_PURCHASABLES, ['purchasableId']); + Schema::createIndex(Table::DISCOUNT_PURCHASABLES, ['discountId', 'purchasableId'], unique: true); + Schema::createIndex(Table::EMAILS, ['storeId']); + Schema::createIndex(Table::EMAIL_DISCOUNTUSES, ['discountId']); + Schema::createIndex(Table::EMAIL_DISCOUNTUSES, ['email', 'discountId'], unique: true); + Schema::createIndex(Table::GATEWAYS, ['handle']); + Schema::createIndex(Table::GATEWAYS, ['isArchived']); + Schema::createIndex(Table::INVENTORYITEMS, ['purchasableId'], unique: true); + Schema::createIndex(Table::INVENTORYTRANSACTIONS, ['inventoryItemId']); + Schema::createIndex(Table::INVENTORYTRANSACTIONS, ['lineItemId']); + Schema::createIndex(Table::INVENTORYTRANSACTIONS, ['transferId']); + Schema::createIndex(Table::INVENTORYTRANSACTIONS, ['userId']); + Schema::createIndex(Table::LINEITEMS, ['purchasableId']); + Schema::createIndex(Table::LINEITEMS, ['shippingCategoryId']); + Schema::createIndex(Table::LINEITEMS, ['taxCategoryId']); + Schema::createIndex(Table::LINEITEMS, ['orderId', 'purchasableId', 'optionsSignature'], unique: true); + Schema::createIndex(Table::LINEITEMSTATUSES, ['storeId']); + Schema::createIndex(Table::ORDERADJUSTMENTS, ['orderId']); + Schema::createIndex(Table::ORDERHISTORIES, ['newStatusId']); + Schema::createIndex(Table::ORDERHISTORIES, ['orderId']); + Schema::createIndex(Table::ORDERHISTORIES, ['prevStatusId']); + Schema::createIndex(Table::ORDERHISTORIES, ['userId']); + Schema::createIndex(Table::ORDERNOTICES, ['orderId']); + Schema::createIndex(Table::ORDERS, ['billingAddressId']); + Schema::createIndex(Table::ORDERS, ['customerId']); + Schema::createIndex(Table::ORDERS, ['email']); + Schema::createIndex(Table::ORDERS, ['estimatedBillingAddressId']); + Schema::createIndex(Table::ORDERS, ['estimatedShippingAddressId']); + Schema::createIndex(Table::ORDERS, ['gatewayId']); + Schema::createIndex(Table::ORDERS, ['number'], unique: true); + Schema::createIndex(Table::ORDERS, ['orderStatusId']); + Schema::createIndex(Table::ORDERS, ['reference']); + Schema::createIndex(Table::ORDERS, ['shippingAddressId']); + Schema::createIndex(Table::ORDERS, ['sourceBillingAddressId']); + Schema::createIndex(Table::ORDERS, ['sourceShippingAddressId']); + Schema::createIndex(Table::ORDERS, ['storeId']); + Schema::createIndex(Table::ORDERSTATUSES, ['storeId']); + Schema::createIndex(Table::ORDERSTATUS_EMAILS, ['emailId']); + Schema::createIndex(Table::ORDERSTATUS_EMAILS, ['orderStatusId']); + Schema::createIndex(Table::PAYMENTCURRENCIES, ['iso']); + Schema::createIndex(Table::PDFS, ['handle']); + Schema::createIndex(Table::PDFS, ['storeId']); + Schema::createIndex(Table::PLANS, ['gatewayId']); + Schema::createIndex(Table::PLANS, ['handle'], unique: true); + Schema::createIndex(Table::PLANS, ['reference']); + Schema::createIndex(Table::PRODUCTS, ['expiryDate']); + Schema::createIndex(Table::PRODUCTS, ['postDate']); + Schema::createIndex(Table::PRODUCTS, ['typeId']); + Schema::createIndex(Table::PRODUCTTYPES, ['structureId']); + Schema::createIndex(Table::PRODUCTTYPES, ['fieldLayoutId']); + Schema::createIndex(Table::PRODUCTTYPES, ['handle'], unique: true); + Schema::createIndex(Table::PRODUCTTYPES, ['variantFieldLayoutId']); + Schema::createIndex(Table::PRODUCTTYPES_SHIPPINGCATEGORIES, ['shippingCategoryId']); + Schema::createIndex(Table::PRODUCTTYPES_SHIPPINGCATEGORIES, ['productTypeId', 'shippingCategoryId'], unique: true); + Schema::createIndex(Table::PRODUCTTYPES_SITES, ['siteId']); + Schema::createIndex(Table::PRODUCTTYPES_SITES, ['productTypeId', 'siteId'], unique: true); + Schema::createIndex(Table::PRODUCTTYPES_TAXCATEGORIES, ['taxCategoryId']); + Schema::createIndex(Table::PRODUCTTYPES_TAXCATEGORIES, ['productTypeId', 'taxCategoryId'], unique: true); + Schema::createIndex(Table::PURCHASABLES, ['sku']); // Application layer enforces unique + Schema::createIndex(Table::PURCHASABLES_STORES, ['purchasableId']); // Application layer enforces unique + Schema::createIndex(Table::PURCHASABLES_STORES, ['storeId']); // Application layer enforces unique + Schema::createIndex(Table::SALE_CATEGORIES, ['categoryId']); + Schema::createIndex(Table::SALE_CATEGORIES, ['saleId', 'categoryId'], unique: true); + Schema::createIndex(Table::SALE_PURCHASABLES, ['purchasableId']); + Schema::createIndex(Table::SALE_PURCHASABLES, ['saleId', 'purchasableId'], unique: true); + Schema::createIndex(Table::SALE_USERGROUPS, ['userGroupId']); + Schema::createIndex(Table::SALE_USERGROUPS, ['saleId', 'userGroupId'], unique: true); + Schema::createIndex(Table::SHIPPINGCATEGORIES, ['storeId']); + Schema::createIndex(Table::SHIPPINGMETHODS, ['name']); + Schema::createIndex(Table::SHIPPINGMETHODS, ['storeId']); + Schema::createIndex(Table::SHIPPINGRULES, ['methodId']); + Schema::createIndex(Table::SHIPPINGRULES, ['name']); + Schema::createIndex(Table::SHIPPINGRULE_CATEGORIES, ['shippingCategoryId']); + Schema::createIndex(Table::SHIPPINGRULE_CATEGORIES, ['shippingRuleId']); + Schema::createIndex(Table::SHIPPINGZONES, ['name']); + Schema::createIndex(Table::SHIPPINGZONES, ['storeId']); + Schema::createIndex(Table::SUBSCRIPTIONS, ['dateCreated']); + Schema::createIndex(Table::SUBSCRIPTIONS, ['dateExpired']); + Schema::createIndex(Table::SUBSCRIPTIONS, ['gatewayId']); + Schema::createIndex(Table::SUBSCRIPTIONS, ['nextPaymentDate']); + Schema::createIndex(Table::SUBSCRIPTIONS, ['planId']); + Schema::createIndex(Table::SUBSCRIPTIONS, ['reference'], unique: true); + Schema::createIndex(Table::SUBSCRIPTIONS, ['userId']); + Schema::createIndex(Table::TAXRATES, ['storeId']); + Schema::createIndex(Table::TAXRATES, ['taxCategoryId']); + Schema::createIndex(Table::TAXRATES, ['taxZoneId']); + Schema::createIndex(Table::TAXZONES, ['name']); + Schema::createIndex(Table::TAXZONES, ['storeId']); + Schema::createIndex(Table::TRANSACTIONS, ['gatewayId']); + Schema::createIndex(Table::TRANSACTIONS, ['orderId']); + Schema::createIndex(Table::TRANSACTIONS, ['parentId']); + Schema::createIndex(Table::TRANSACTIONS, ['userId']); + Schema::createIndex(Table::TRANSACTIONS, ['hash']); + Schema::createIndex(Table::TRANSFERS, ['destinationLocationId']); + Schema::createIndex(Table::TRANSFERS, ['originLocationId']); + Schema::createIndex(Table::TRANSFERDETAILS, ['transferId']); + Schema::createIndex(Table::TRANSFERDETAILS, ['inventoryItemId']); + Schema::createIndex(Table::VARIANTS, ['primaryOwnerId']); + } + + /** + * Adds the foreign keys. + */ + public function addForeignKeys(): void + { + Schema::table(Table::CATALOG_PRICING, fn (Blueprint $table) => $table->foreign('catalogPricingRuleId')->references('id')->on(Table::CATALOG_PRICING_RULES)->cascadeOnDelete()); + Schema::table(Table::CATALOG_PRICING, fn (Blueprint $table) => $table->foreign('purchasableId')->references('id')->on(Table::PURCHASABLES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::CATALOG_PRICING, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()); + Schema::table(Table::CATALOG_PRICING, fn (Blueprint $table) => $table->foreign('userId')->references('id')->on(CraftTable::USERS)->cascadeOnDelete()); + Schema::table(Table::CATALOG_PRICING_QUEUE, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::CATALOG_PRICING_RULES, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::CATALOG_PRICING_RULES_USERS, fn (Blueprint $table) => $table->foreign('catalogPricingRuleId')->references('id')->on(Table::CATALOG_PRICING_RULES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::CATALOG_PRICING_RULES_USERS, fn (Blueprint $table) => $table->foreign('userId')->references('id')->on(CraftTable::USERS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::COUPONS, fn (Blueprint $table) => $table->foreign('discountId')->references('id')->on(Table::DISCOUNTS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::CUSTOMERS, fn (Blueprint $table) => $table->foreign('customerId')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::CUSTOMERS, fn (Blueprint $table) => $table->foreign('primaryBillingAddressId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::CUSTOMERS, fn (Blueprint $table) => $table->foreign('primaryPaymentSourceId')->references('id')->on(Table::PAYMENTSOURCES)->nullOnDelete()); + Schema::table(Table::CUSTOMERS, fn (Blueprint $table) => $table->foreign('primaryShippingAddressId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::CUSTOMER_DISCOUNTUSES, fn (Blueprint $table) => $table->foreign('customerId')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::CUSTOMER_DISCOUNTUSES, fn (Blueprint $table) => $table->foreign('discountId')->references('id')->on(Table::DISCOUNTS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::DISCOUNTS, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::DISCOUNT_CATEGORIES, fn (Blueprint $table) => $table->foreign('categoryId')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::DISCOUNT_CATEGORIES, fn (Blueprint $table) => $table->foreign('discountId')->references('id')->on(Table::DISCOUNTS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::DISCOUNT_PURCHASABLES, fn (Blueprint $table) => $table->foreign('discountId')->references('id')->on(Table::DISCOUNTS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::DISCOUNT_PURCHASABLES, fn (Blueprint $table) => $table->foreign('purchasableId')->references('id')->on(Table::PURCHASABLES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::DONATIONS, fn (Blueprint $table) => $table->foreign('id')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()); + Schema::table(Table::EMAILS, fn (Blueprint $table) => $table->foreign('pdfId')->references('id')->on(Table::PDFS)->nullOnDelete()); + Schema::table(Table::EMAILS, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::EMAILS, fn (Blueprint $table) => $table->foreign('renderSiteId')->references('id')->on(CraftTable::SITES)->nullOnDelete()); + Schema::table(Table::EMAIL_DISCOUNTUSES, fn (Blueprint $table) => $table->foreign('discountId')->references('id')->on(Table::DISCOUNTS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::INVENTORYITEMS, fn (Blueprint $table) => $table->foreign('purchasableId')->references('id')->on(Table::PURCHASABLES)->cascadeOnDelete()); + Schema::table(Table::INVENTORYLOCATIONS, fn (Blueprint $table) => $table->foreign('addressId')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()); + Schema::table(Table::INVENTORYLOCATIONS_STORES, fn (Blueprint $table) => $table->foreign('inventoryLocationId')->references('id')->on(Table::INVENTORYLOCATIONS)->cascadeOnDelete()); + Schema::table(Table::INVENTORYLOCATIONS_STORES, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()); + Schema::table(Table::INVENTORYTRANSACTIONS, fn (Blueprint $table) => $table->foreign('inventoryItemId')->references('id')->on(Table::INVENTORYITEMS)->cascadeOnDelete()); + Schema::table(Table::INVENTORYTRANSACTIONS, fn (Blueprint $table) => $table->foreign('inventoryLocationId')->references('id')->on(Table::INVENTORYLOCATIONS)->cascadeOnDelete()); + Schema::table(Table::INVENTORYTRANSACTIONS, fn (Blueprint $table) => $table->foreign('lineItemId')->references('id')->on(Table::LINEITEMS)->cascadeOnDelete()); + // NOTE: the legacy migration added this same FK twice (once here, once further down); only ported once. + Schema::table(Table::INVENTORYTRANSACTIONS, fn (Blueprint $table) => $table->foreign('transferId')->references('id')->on(Table::TRANSFERS)->nullOnDelete()); + Schema::table(Table::INVENTORYTRANSACTIONS, fn (Blueprint $table) => $table->foreign('userId')->references('id')->on(CraftTable::USERS)->nullOnDelete()); + Schema::table(Table::LINEITEMS, fn (Blueprint $table) => $table->foreign('orderId')->references('id')->on(Table::ORDERS)->cascadeOnDelete()); + Schema::table(Table::LINEITEMS, fn (Blueprint $table) => $table->foreign('purchasableId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()->cascadeOnUpdate()); + Schema::table(Table::LINEITEMS, fn (Blueprint $table) => $table->foreign('shippingCategoryId')->references('id')->on(Table::SHIPPINGCATEGORIES)->cascadeOnUpdate()); + Schema::table(Table::LINEITEMS, fn (Blueprint $table) => $table->foreign('taxCategoryId')->references('id')->on(Table::TAXCATEGORIES)->cascadeOnUpdate()); + Schema::table(Table::LINEITEMSTATUSES, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::ORDERADJUSTMENTS, fn (Blueprint $table) => $table->foreign('orderId')->references('id')->on(Table::ORDERS)->cascadeOnDelete()); + Schema::table(Table::ORDERHISTORIES, fn (Blueprint $table) => $table->foreign('newStatusId')->references('id')->on(Table::ORDERSTATUSES)->restrictOnDelete()->cascadeOnUpdate()); + Schema::table(Table::ORDERHISTORIES, fn (Blueprint $table) => $table->foreign('orderId')->references('id')->on(Table::ORDERS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::ORDERHISTORIES, fn (Blueprint $table) => $table->foreign('prevStatusId')->references('id')->on(Table::ORDERSTATUSES)->restrictOnDelete()->cascadeOnUpdate()); + Schema::table(Table::ORDERHISTORIES, fn (Blueprint $table) => $table->foreign('userId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::ORDERNOTICES, fn (Blueprint $table) => $table->foreign('orderId')->references('id')->on(Table::ORDERS)->cascadeOnDelete()); + Schema::table(Table::ORDERS, fn (Blueprint $table) => $table->foreign('billingAddressId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::ORDERS, fn (Blueprint $table) => $table->foreign('customerId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::ORDERS, fn (Blueprint $table) => $table->foreign('estimatedBillingAddressId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::ORDERS, fn (Blueprint $table) => $table->foreign('estimatedShippingAddressId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::ORDERS, fn (Blueprint $table) => $table->foreign('gatewayId')->references('id')->on(Table::GATEWAYS)->nullOnDelete()); + Schema::table(Table::ORDERS, fn (Blueprint $table) => $table->foreign('id')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()); + Schema::table(Table::ORDERS, fn (Blueprint $table) => $table->foreign('orderStatusId')->references('id')->on(Table::ORDERSTATUSES)->restrictOnDelete()->cascadeOnUpdate()); + Schema::table(Table::ORDERS, fn (Blueprint $table) => $table->foreign('paymentSourceId')->references('id')->on(Table::PAYMENTSOURCES)->nullOnDelete()); + Schema::table(Table::ORDERS, fn (Blueprint $table) => $table->foreign('shippingAddressId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::ORDERS, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::ORDERSTATUSES, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::ORDERSTATUS_EMAILS, fn (Blueprint $table) => $table->foreign('emailId')->references('id')->on(Table::EMAILS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::ORDERSTATUS_EMAILS, fn (Blueprint $table) => $table->foreign('orderStatusId')->references('id')->on(Table::ORDERSTATUSES)->restrictOnDelete()->cascadeOnUpdate()); + Schema::table(Table::PAYMENTCURRENCIES, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::PAYMENTSOURCES, fn (Blueprint $table) => $table->foreign('customerId')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()); + Schema::table(Table::PAYMENTSOURCES, fn (Blueprint $table) => $table->foreign('gatewayId')->references('id')->on(Table::GATEWAYS)->cascadeOnDelete()); + Schema::table(Table::PDFS, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()); + Schema::table(Table::PLANS, fn (Blueprint $table) => $table->foreign('gatewayId')->references('id')->on(Table::GATEWAYS)->cascadeOnDelete()); + Schema::table(Table::PLANS, fn (Blueprint $table) => $table->foreign('planInformationId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::PRODUCTS, fn (Blueprint $table) => $table->foreign('id')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()); + Schema::table(Table::PRODUCTS, fn (Blueprint $table) => $table->foreign('typeId')->references('id')->on(Table::PRODUCTTYPES)->cascadeOnDelete()); + Schema::table(Table::PRODUCTS, fn (Blueprint $table) => $table->foreign('defaultVariantId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::PRODUCTTYPES, fn (Blueprint $table) => $table->foreign('fieldLayoutId')->references('id')->on(CraftTable::FIELDLAYOUTS)->nullOnDelete()); + Schema::table(Table::PRODUCTTYPES, fn (Blueprint $table) => $table->foreign('variantFieldLayoutId')->references('id')->on(CraftTable::FIELDLAYOUTS)->nullOnDelete()); + Schema::table(Table::PRODUCTTYPES, fn (Blueprint $table) => $table->foreign('structureId')->references('id')->on(CraftTable::STRUCTURES)->nullOnDelete()); + Schema::table(Table::PRODUCTTYPES_SHIPPINGCATEGORIES, fn (Blueprint $table) => $table->foreign('productTypeId')->references('id')->on(Table::PRODUCTTYPES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::PRODUCTTYPES_SHIPPINGCATEGORIES, fn (Blueprint $table) => $table->foreign('shippingCategoryId', 'commerce_pts_shippingcategoryid_foreign')->references('id')->on(Table::SHIPPINGCATEGORIES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::PRODUCTTYPES_SITES, fn (Blueprint $table) => $table->foreign('productTypeId')->references('id')->on(Table::PRODUCTTYPES)->cascadeOnDelete()); + Schema::table(Table::PRODUCTTYPES_SITES, fn (Blueprint $table) => $table->foreign('siteId')->references('id')->on(CraftTable::SITES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::PRODUCTTYPES_TAXCATEGORIES, fn (Blueprint $table) => $table->foreign('productTypeId')->references('id')->on(Table::PRODUCTTYPES)->cascadeOnDelete()); + Schema::table(Table::PRODUCTTYPES_TAXCATEGORIES, fn (Blueprint $table) => $table->foreign('taxCategoryId')->references('id')->on(Table::TAXCATEGORIES)->cascadeOnDelete()); + Schema::table(Table::PURCHASABLES, fn (Blueprint $table) => $table->foreign('id')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()); + Schema::table(Table::PURCHASABLES, fn (Blueprint $table) => $table->foreign('taxCategoryId')->references('id')->on(Table::TAXCATEGORIES)); + // NOTE: the legacy migration added this same FK twice (once with just cascadeOnDelete, once with cascadeOnDelete+cascadeOnUpdate); only the more complete one is ported. + Schema::table(Table::PURCHASABLES_STORES, fn (Blueprint $table) => $table->foreign('purchasableId')->references('id')->on(Table::PURCHASABLES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::PURCHASABLES_STORES, fn (Blueprint $table) => $table->foreign('shippingCategoryId')->references('id')->on(Table::SHIPPINGCATEGORIES)->nullOnDelete()); + Schema::table(Table::PURCHASABLES_STORES, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()); + Schema::table(Table::SALE_CATEGORIES, fn (Blueprint $table) => $table->foreign('categoryId')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::SALE_CATEGORIES, fn (Blueprint $table) => $table->foreign('saleId')->references('id')->on(Table::SALES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::SALE_PURCHASABLES, fn (Blueprint $table) => $table->foreign('purchasableId')->references('id')->on(Table::PURCHASABLES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::SALE_PURCHASABLES, fn (Blueprint $table) => $table->foreign('saleId')->references('id')->on(Table::SALES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::SALE_USERGROUPS, fn (Blueprint $table) => $table->foreign('saleId')->references('id')->on(Table::SALES)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::SALE_USERGROUPS, fn (Blueprint $table) => $table->foreign('userGroupId')->references('id')->on(CraftTable::USERGROUPS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::SHIPPINGCATEGORIES, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()); + Schema::table(Table::SHIPPINGMETHODS, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()); + Schema::table(Table::SHIPPINGRULES, fn (Blueprint $table) => $table->foreign('methodId')->references('id')->on(Table::SHIPPINGMETHODS)->cascadeOnDelete()); + Schema::table(Table::SHIPPINGRULE_CATEGORIES, fn (Blueprint $table) => $table->foreign('shippingCategoryId')->references('id')->on(Table::SHIPPINGCATEGORIES)->cascadeOnDelete()); + Schema::table(Table::SHIPPINGRULE_CATEGORIES, fn (Blueprint $table) => $table->foreign('shippingRuleId')->references('id')->on(Table::SHIPPINGRULES)->cascadeOnDelete()); + Schema::table(Table::SHIPPINGZONES, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()); + Schema::table(Table::STORESETTINGS, fn (Blueprint $table) => $table->foreign('locationAddressId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::STORESETTINGS, fn (Blueprint $table) => $table->foreign('id')->references('id')->on(Table::STORES)->cascadeOnDelete()); + Schema::table(Table::SUBSCRIPTIONS, fn (Blueprint $table) => $table->foreign('gatewayId')->references('id')->on(Table::GATEWAYS)->restrictOnDelete()); + Schema::table(Table::SUBSCRIPTIONS, fn (Blueprint $table) => $table->foreign('id')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()); + Schema::table(Table::SUBSCRIPTIONS, fn (Blueprint $table) => $table->foreign('orderId')->references('id')->on(Table::ORDERS)->nullOnDelete()); + Schema::table(Table::SUBSCRIPTIONS, fn (Blueprint $table) => $table->foreign('planId')->references('id')->on(Table::PLANS)->restrictOnDelete()); + Schema::table(Table::SUBSCRIPTIONS, fn (Blueprint $table) => $table->foreign('userId')->references('id')->on(CraftTable::USERS)->cascadeOnDelete()); + Schema::table(Table::TAXRATES, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()); + Schema::table(Table::TAXRATES, fn (Blueprint $table) => $table->foreign('taxCategoryId')->references('id')->on(Table::TAXCATEGORIES)->cascadeOnUpdate()); + Schema::table(Table::TAXRATES, fn (Blueprint $table) => $table->foreign('taxZoneId')->references('id')->on(Table::TAXZONES)->cascadeOnUpdate()); + Schema::table(Table::TAXZONES, fn (Blueprint $table) => $table->foreign('storeId')->references('id')->on(Table::STORES)->cascadeOnDelete()); + Schema::table(Table::TRANSACTIONS, fn (Blueprint $table) => $table->foreign('gatewayId')->references('id')->on(Table::GATEWAYS)->cascadeOnUpdate()); + Schema::table(Table::TRANSACTIONS, fn (Blueprint $table) => $table->foreign('orderId')->references('id')->on(Table::ORDERS)->cascadeOnDelete()); + Schema::table(Table::TRANSACTIONS, fn (Blueprint $table) => $table->foreign('parentId')->references('id')->on(Table::TRANSACTIONS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::TRANSACTIONS, fn (Blueprint $table) => $table->foreign('userId')->references('id')->on(CraftTable::ELEMENTS)->nullOnDelete()); + Schema::table(Table::TRANSFERS, fn (Blueprint $table) => $table->foreign('id')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::TRANSFERDETAILS, fn (Blueprint $table) => $table->foreign('transferId')->references('id')->on(Table::TRANSFERS)->cascadeOnDelete()->cascadeOnUpdate()); + Schema::table(Table::TRANSFERDETAILS, fn (Blueprint $table) => $table->foreign('inventoryItemId')->references('id')->on(Table::INVENTORYITEMS)->nullOnDelete()->cascadeOnUpdate()); + Schema::table(Table::VARIANTS, fn (Blueprint $table) => $table->foreign('id')->references('id')->on(CraftTable::ELEMENTS)->cascadeOnDelete()); + Schema::table(Table::VARIANTS, fn (Blueprint $table) => $table->foreign('primaryOwnerId')->references('id')->on(Table::PRODUCTS)->cascadeOnDelete()); + } + + /** + * Inserts the default data. + * + * This is a fresh-install migration only (there is no upgrade path through this class), so — unlike the + * legacy Yii2 version — there's no need to guard against a pre-existing project config, patch up an old + * 5.0.0-beta.1 project config bug, or skip re-seeding a store/gateway that already exist. We also insert + * rows directly rather than going through the Commerce services (e.g. Stores::saveStore()), since those + * write through the project config system, which isn't guaranteed to apply synchronously in every context + * this migration runs in (e.g. the Testbench-based test harness). + */ + public function insertDefaultData(): void + { + $now = now()->toDateTimeString(); + + // Default (primary) store + $storeId = DB::table(Table::STORES)->insertGetId([ + 'name' => 'Primary', + 'handle' => 'primary', + 'primary' => true, + 'currency' => 'USD', + 'orderReferenceFormat' => '{{number[:7]}}', + 'sortOrder' => 1, + 'dateCreated' => $now, + 'dateUpdated' => $now, + 'uid' => Str::uuid()->toString(), + ]); + + // Map every existing site to the new store, using the site's own uid (there's only ever one + // site-store mapping row per site, so it can safely share the site's uid). + $sites = DB::table(CraftTable::SITES)->select(['id', 'uid'])->get(); + foreach ($sites as $site) { + DB::table(Table::SITESTORES)->insert([ + 'siteId' => $site->id, + 'storeId' => $storeId, + 'uid' => $site->uid, + 'dateCreated' => $now, + 'dateUpdated' => $now, + ]); + } + + // Default payment currency for the store + DB::table(Table::PAYMENTCURRENCIES)->insert([ + 'storeId' => $storeId, + 'iso' => 'USD', + 'rate' => 1, + 'dateCreated' => $now, + 'dateUpdated' => $now, + 'uid' => Str::uuid()->toString(), + ]); + + // Default shipping category for the store + DB::table(Table::SHIPPINGCATEGORIES)->insert([ + 'storeId' => $storeId, + 'name' => 'General', + 'handle' => 'general', + 'default' => true, + 'dateCreated' => $now, + 'dateUpdated' => $now, + 'uid' => Str::uuid()->toString(), + ]); + + // Default order status for the store + DB::table(Table::ORDERSTATUSES)->insert([ + 'storeId' => $storeId, + 'name' => 'New', + 'handle' => 'new', + 'color' => 'green', + 'default' => true, + 'dateCreated' => $now, + 'dateUpdated' => $now, + 'uid' => Str::uuid()->toString(), + ]); + + // Default (Dummy) gateway + DB::table(Table::GATEWAYS)->insert([ + // TODO: update to the CraftCms\Commerce\... FQCN once the Dummy gateway is migrated to src/ + 'type' => 'craft\\commerce\\gateways\\Dummy', + 'name' => 'Dummy', + 'handle' => 'dummy', + 'isFrontendEnabled' => '1', + 'isArchived' => false, + 'dateCreated' => $now, + 'dateUpdated' => $now, + 'uid' => Str::uuid()->toString(), + ]); + + // Default tax category (global, not store-specific) + DB::table(Table::TAXCATEGORIES)->insert([ + 'name' => 'General', + 'handle' => 'general', + 'default' => true, + 'dateCreated' => $now, + 'dateUpdated' => $now, + 'uid' => Str::uuid()->toString(), + ]); + + // Default inventory location, assigned to the store + $inventoryLocationId = DB::table(Table::INVENTORYLOCATIONS)->insertGetId([ + 'handle' => 'default', + 'name' => 'Default', + 'dateCreated' => $now, + 'dateUpdated' => $now, + 'uid' => Str::uuid()->toString(), + ]); + + DB::table(Table::INVENTORYLOCATIONS_STORES)->insert([ + 'inventoryLocationId' => $inventoryLocationId, + 'storeId' => $storeId, + 'sortOrder' => 1, + 'dateCreated' => $now, + 'dateUpdated' => $now, + 'uid' => Str::uuid()->toString(), + ]); + } + + public function down(): void + { + $this->task('Uninstall Craft Commerce', function (?Logger $logger = null) { + $logger?->subLabel('Dropping tables...'); + $this->dropTables(); + $logger?->success('Tables dropped.'); + + $logger?->subLabel('Removing field layouts...'); + $this->dropFieldLayouts(); + $logger?->success('Field layouts removed.'); + + $logger?->subLabel('Removing project config...'); + ProjectConfig::remove('commerce'); + $logger?->success('Project config removed.'); + }); + } + + /** + * Drops all of Commerce's tables. + */ + public function dropTables(): void + { + Schema::disableForeignKeyConstraints(); + + foreach ($this->allTableNames() as $table) { + Schema::dropIfExists($table); + } + + Schema::enableForeignKeyConstraints(); + } + + /** + * Deletes the field layouts belonging to Commerce's element types, including legacy + * `craft\commerce\*` type strings left behind by installs that predate the Laravel port. + */ + public function dropFieldLayouts(): void + { + DB::table(CraftTable::FIELDLAYOUTS)->whereIn('type', [ + Order::class, + Product::class, + Transfer::class, + Variant::class, + 'craft\\commerce\\elements\\Order', + 'craft\\commerce\\elements\\Product', + 'craft\\commerce\\elements\\Variant', + // `craft\commerce\elements\Subscription` was removed in 6.0, so it has no Laravel class. + 'craft\\commerce\\elements\\Subscription', + 'craft\\commerce\\elements\\Transfer', + ])->delete(); + } + + /** @return string[] */ + private function allTableNames(): array + { + return array_values((new ReflectionClass(Table::class))->getConstants()); + } +} diff --git a/example-templates/dist/shop/_private/layouts/includes/nav-main.twig b/example-templates/dist/shop/_private/layouts/includes/nav-main.twig index 21c6374319..78ddaf6303 100644 --- a/example-templates/dist/shop/_private/layouts/includes/nav-main.twig +++ b/example-templates/dist/shop/_private/layouts/includes/nav-main.twig @@ -10,10 +10,6 @@ Outputs the site’s global main navigation based on path and included `pages` a label: 'Products', url: 'shop/products' }, - { - label: 'Plans', - url: 'shop/plans' - }, { label: 'Donations', url: 'shop/donations' diff --git a/example-templates/dist/shop/_private/layouts/index.twig b/example-templates/dist/shop/_private/layouts/index.twig index 0c20676c94..fe3a7af7a4 100644 --- a/example-templates/dist/shop/_private/layouts/index.twig +++ b/example-templates/dist/shop/_private/layouts/index.twig @@ -80,7 +80,7 @@ Common, top-level layout template. {% endfor %} {% endfor %}
- {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('Notices dismissed') }} {{ hiddenInput('clearNotices') }} {{ csrfInput() }} diff --git a/example-templates/dist/shop/cart/index.twig b/example-templates/dist/shop/cart/index.twig index d14d7169a5..1de2fb9237 100644 --- a/example-templates/dist/shop/cart/index.twig +++ b/example-templates/dist/shop/cart/index.twig @@ -14,7 +14,7 @@ Outputs cart. {% if cart.lineItems|length %} {{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('Cart updated.'|t) }}
diff --git a/example-templates/dist/shop/cart/load.twig b/example-templates/dist/shop/cart/load.twig index dfe8d144d9..f356da9a17 100644 --- a/example-templates/dist/shop/cart/load.twig +++ b/example-templates/dist/shop/cart/load.twig @@ -6,7 +6,7 @@ Outputs form for collecting a cart number to be loaded. {{ csrfInput() }} - {{ actionInput('commerce/cart/load-cart') }} + {{ actionInput('commerce/cart/load') }} {{ redirectInput('shop/cart') }}

diff --git a/example-templates/dist/shop/checkout/addresses.twig b/example-templates/dist/shop/checkout/addresses.twig index b5b183e958..2b5f14f18d 100644 --- a/example-templates/dist/shop/checkout/addresses.twig +++ b/example-templates/dist/shop/checkout/addresses.twig @@ -19,7 +19,7 @@ Outputs a form for collecting an order’s shipping and billing address.
{{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('Addresses selected.') }} {{ redirectInput(siteUrl('shop/checkout/shipping')) }} diff --git a/example-templates/dist/shop/checkout/email.twig b/example-templates/dist/shop/checkout/email.twig index bf9aad87b8..fe0f30998f 100644 --- a/example-templates/dist/shop/checkout/email.twig +++ b/example-templates/dist/shop/checkout/email.twig @@ -14,7 +14,7 @@
{{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ redirectInput('shop/checkout/register-signin') }} {{ successMessageInput('Email address updated.') }} diff --git a/example-templates/dist/shop/checkout/options.twig b/example-templates/dist/shop/checkout/options.twig index bd1f68bf74..77f99e9816 100644 --- a/example-templates/dist/shop/checkout/options.twig +++ b/example-templates/dist/shop/checkout/options.twig @@ -32,7 +32,7 @@ {{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ redirectInput(siteUrl('shop/checkout/payment')) }} {{ successMessageInput('Options saved.') }} diff --git a/example-templates/dist/shop/checkout/payment-method.twig b/example-templates/dist/shop/checkout/payment-method.twig index b7b0e30cca..e93bf1f940 100644 --- a/example-templates/dist/shop/checkout/payment-method.twig +++ b/example-templates/dist/shop/checkout/payment-method.twig @@ -20,7 +20,7 @@
{{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ redirectInput(siteUrl('shop/checkout/options')) }} {{ successMessageInput('Payment options selected.') }} diff --git a/example-templates/dist/shop/checkout/shipping.twig b/example-templates/dist/shop/checkout/shipping.twig index 2beb47204f..d5309fb52e 100644 --- a/example-templates/dist/shop/checkout/shipping.twig +++ b/example-templates/dist/shop/checkout/shipping.twig @@ -27,7 +27,7 @@
{{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ redirectInput(siteUrl('shop/checkout/payment-method')) }} {{ successMessageInput('Shipping option updated.') }} diff --git a/example-templates/dist/shop/donations/index.twig b/example-templates/dist/shop/donations/index.twig index 2847659a8f..dfd440c79c 100644 --- a/example-templates/dist/shop/donations/index.twig +++ b/example-templates/dist/shop/donations/index.twig @@ -11,7 +11,7 @@ {% if donation and donation.isAvailable %} {{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('Donation added.'|t) }} {{ redirectInput('shop/cart') }} {{ hiddenInput('purchasableId', craft.commerce.donation.id) }} diff --git a/example-templates/dist/shop/plans/index.twig b/example-templates/dist/shop/plans/index.twig deleted file mode 100644 index a0cc6e42a7..0000000000 --- a/example-templates/dist/shop/plans/index.twig +++ /dev/null @@ -1,164 +0,0 @@ -{% extends 'shop/_private/layouts' %} - -{# @var plans \craft\commerce\base\Plan[] #} -{% set plans = craft.commerce.getPlans().getAllEnabledPlans() %} - -{% block main %} - -

- {{- 'Plans'|t -}} -

- {% if not plans|length %} -

- {{- 'No plans set up.'|t -}} -

- {% endif %} - - {# @var currentUser \craft\elements\User #} - {% if currentUser %} -
- {% set subscriptions = craft.subscriptions.status(null).userId(currentUser.id).all() %} - - {% if subscriptions|length %} - - - - - - - - - - - {% for subscription in subscriptions %} - - - - - - - {% endfor %} - -
{{ 'Plan'|t }}{{ 'Created'|t }}{{ 'Next Payment'|t }} 
- {% set plan = subscription.plan ?? null %} - {% if plan %} -
- {{ plan.name }} - - {# @var information \craft\elements\Entry #} - {% set information = plan.getInformation() ?? null %} - {% if information %} -
-

{{ 'Plan Information Entry'|t }}

-
    -
  • {{ 'ID' }}: {{ information.id }}
  • -
  • {{ 'Title' }}: {{ information.title }}
  • -
-
-
- {% endif %} -
- {% endif %} - - {% if subscription.isCanceled %} -
- - {{- 'Canceled on {date}.'|t({ date: subscription.dateCanceled|date('Y-m-d') }) -}} - -
- {% endif %} -
- {{ subscription.dateCreated|date('Y-m-d') }} - - {{- subscription.isCanceled - ? 'Expires on {date}.'|t({ date: subscription.nextPaymentDate|date('Y-m-d') }) - : '' - -}} - - - {{- 'Manage'|t -}} - - - {% if subscription.isSuspended and subscription.hasBillingIssues %} - - {{- 'Fix Billing'|t -}} - - {% endif %} - -
- {% else %} -

- {{- 'You do not have any active subscriptions.'|t -}} -

- {% endif %} -
- {% endif %} - - {% if currentUser and plans|length %} -
-

- {{ 'Available Plans'|t }} -

- -
- {% for plan in plans %} - {% set paymentSources = craft.commerce.paymentSources.getAllPaymentSourcesByCustomerId(currentUser.id, plan.gateway.id) %} - -
-
- - {{ csrfInput() }} - {{ actionInput('commerce/subscriptions/subscribe') }} - {{ redirectInput('shop/plans') }} - {{ hiddenInput('planUid', plan.uid|hash) }} - -

- {{- plan.name -}} -

- {% if paymentSources|length %} -
- {% tag 'select' with { - name: 'trialDays', - 'data-plan': plan.id, - class: 'border border-gray-300 hover:border-gray-500 px-4 py-2 leading-tight rounded' - } %} - {% for i in [0, 3, 7, 14] %} - {% if i == 0 %} - {{ tag('option', { - value: (plan.uid ~ ':0')|hash, - text: 'No trial period.'|t - }) }} - {% else %} - {{ tag('option', { - value: (plan.uid ~ ':' ~ i)|hash, - text: 'Trial for {n} days.'|t({ n: i }) - }) }} - {% endif %} - {% endfor %} - {% endtag %} -
- {{ tag('button', { - type: 'submit', - class: 'cursor-pointer rounded px-4 py-2 inline-block bg-blue-500 hover:bg-blue-600 text-white hover:text-white', - text: 'Subscribe'|t - }) }} -
- {% else %} -

- {{- 'You do not have any payment sources set up for {gateway}.'|t({ gateway: plan.gateway.name }) -}} -

- Add Card - {% endif %} -
- -
-
- {% endfor %} -
-
- {% endif %} -{% endblock %} diff --git a/example-templates/dist/shop/plans/subscription/index.twig b/example-templates/dist/shop/plans/subscription/index.twig deleted file mode 100644 index 606bed76f9..0000000000 --- a/example-templates/dist/shop/plans/subscription/index.twig +++ /dev/null @@ -1,160 +0,0 @@ -{% extends 'shop/_private/layouts' %} - -{# @var subscriptionId string #} -{% set subscriptionId = craft.app.request.param('subscription') %} -{# @var subscription \craft\commerce\elements\Subscription #} -{% set subscription = craft.subscriptions() - .id(subscriptionId) - .one() %} - -{% if not subscription or currentUser is null or subscription.userId != currentUser.id %} - {% redirect 'shop/plans' %} -{% endif %} - -{% block main %} - - -

- {{- 'Manage {plan}'|t({ plan: subscription.plan.name }) -}} -

- - {# @var information \craft\elements\Entry #} - {% set information = subscription.plan.getInformation() ?? null %} -
-
- - {{- 'Subscription Information'|t -}} - -
-
 
- {% if information %} -
- {{- 'Plan Information Entry'|t -}} -
-
-
    -
  • {{ 'ID'|t }}: {{ information.id }}
  • -
  • {{ 'Title'|t }}: {{ information.title }}
  • -
-
- {% endif %} - {% if subscription.isExpired %} -
{{ 'Expired on'|t }}
-
{{ subscription.dateExpired|date('Y-m-d') }}
- {% else %} - {% if subscription.isCanceled %} -
{{ 'Cancelled on'|t }}
-
{{ subscription.dateCanceled|date('Y-m-d') }}
-
{{ 'Expires on'|t }}
-
{{ subscription.nextPaymentDate|date('Y-m-d') }}
- {% if subscription.canReactivate() %} -
-
-
- {{ csrfInput() }} - {{ actionInput('commerce/subscriptions/reactivate') }} - {{ hiddenInput('subscriptionUid', subscription.uid|hash) }} - {{ redirectInput('shop/plans') }} - {{ tag('button', { - type: 'submit', - class: 'cursor-pointer rounded px-4 py-2 inline-block bg-blue-500 hover:bg-blue-600 text-white hover:text-white', - text: 'Reactivate'|t - }) }} -
-
- {% endif %} - {% else %} -
{{ 'Payment Amount'|t }}
-
{{ subscription.getNextPaymentAmount() }}
-
{{ 'Next Payment'|t }}
-
{{ subscription.nextPaymentDate|date('Y-m-d') }}
-
 
-
-
- {{ csrfInput() }} - {{ actionInput('commerce/subscriptions/cancel') }} - {{ hiddenInput('subscriptionUid', subscription.uid|hash) }} - {{ redirectInput('shop/plans') }} - - {{ subscription.plan.getGateway().getCancelSubscriptionFormHtml(subscription)|raw }} - - {{ tag('button', { - type: 'submit', - class: 'cursor-pointer rounded px-4 py-2 inline-block bg-gray-500 hover:bg-gray-600 text-white hover:text-white', - text: 'Unsubscribe'|t - }) }} -
-
- {% endif %} - {% endif %} -
- - {% if not subscription.isCanceled and not subscription.isExpired and subscription.alternativePlans|length %} -
-

- {{- 'Alternative Plans'|t -}} -

- - - - - - - - - {% for plan in subscription.alternativePlans %} - - - - - {% endfor %} - -
{{ 'Plan'|t }} 
{{ plan.name }} -
- {{ csrfInput() }} - {{ actionInput('commerce/subscriptions/switch') }} - {{ hiddenInput('subscriptionUid', subscription.uid|hash) }} - {{ hiddenInput('planUid', plan.uid|hash) }} - {{ redirectInput('shop/plans') }} - - {{ plan.gateway.getSwitchPlansFormHtml(subscription.plan, plan)|raw }} - - {{ tag('button', { - type: 'submit', - class: 'cursor-pointer rounded px-4 py-2 inline-block bg-blue-500 hover:bg-blue-600 text-white hover:text-white', - text: 'Switch'|t - }) }} -
-
-
- {% endif %} - - {# @var payments \craft\commerce\models\subscriptions\SubscriptionPayment[] #} - {% set payments = subscription.getAllPayments() %} - {% if payments|length %} -

- {{- 'Payment History'|t -}} -

- - - - - - - - -
{{ 'Date'|t }}{{ 'Amount'|t }}
- - {% for payment in payments %} - - - {{ payment.paymentDate|date("Y-m-d H:i") }} - - - {{ payment.paymentCurrency }} {{ payment.paymentAmount }} - - - {% endfor %} - - {% endif %} -{% endblock %} diff --git a/example-templates/dist/shop/plans/update-billing-details.twig b/example-templates/dist/shop/plans/update-billing-details.twig deleted file mode 100644 index 4591167ad6..0000000000 --- a/example-templates/dist/shop/plans/update-billing-details.twig +++ /dev/null @@ -1,55 +0,0 @@ -{% extends 'shop/_private/layouts' %} - -{# @var subscriptionUid string #} -{% set subscriptionUid = craft.app.request.getParam('subscription') %} -{# @var subscription \craft\commerce\elements\Subscription #} -{% set subscription = craft.subscriptions() - .status(null) - .uid(subscriptionUid) - .one() %} - -{% block main %} - - - {# @var currentUser \craft\elements\User #} - {% if currentUser is null or not subscriptionUid or not subscription %} - {% exit 404 %} - {% endif %} - - {% if subscription.subscriber.id != currentUser.id %} - {% exit 404 %} - {% endif %} - - {% if subscription.isExpired == true %} - {% exit 404 %} - {% endif %} - - {% if subscription.isCanceled == true %} - {% exit 404 %} - {% endif %} - - {% set planName = subscription.getPlan().name %} - -
-
- {% if subscription.isSuspended and subscription.hasBillingIssues %} -

- {{- 'Billing issue for subscription to {plan}'|t({ plan: planName }) -}} -

- -
{{ subscription.getBillingIssueDescription() }}
- -
-
- {{ redirectInput('shop/plans') }} - {{ subscription.getBillingIssueResolveFormHtml()|raw }} -
-
- {% else %} -

- {{- 'No issues with subscription to {plan}'|t({ plan: planName }) -}} -

- {% endif %} -
-
-{% endblock %} diff --git a/example-templates/dist/shop/products/_includes/grid.twig b/example-templates/dist/shop/products/_includes/grid.twig index bd60ef2ef1..55a1b1eec4 100644 --- a/example-templates/dist/shop/products/_includes/grid.twig +++ b/example-templates/dist/shop/products/_includes/grid.twig @@ -29,7 +29,7 @@

{{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('{product} added to cart.'|t({ product: product.title })) }} diff --git a/example-templates/dist/shop/products/_product.twig b/example-templates/dist/shop/products/_product.twig index deeeed88ed..ce19c82844 100644 --- a/example-templates/dist/shop/products/_product.twig +++ b/example-templates/dist/shop/products/_product.twig @@ -32,7 +32,7 @@ {{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('{product} added to cart.'|t({ product: product.title })) }} diff --git a/example-templates/src/shop/_private/layouts/includes/nav-main.twig b/example-templates/src/shop/_private/layouts/includes/nav-main.twig index 9c4a3ec453..886f66c2ea 100644 --- a/example-templates/src/shop/_private/layouts/includes/nav-main.twig +++ b/example-templates/src/shop/_private/layouts/includes/nav-main.twig @@ -10,10 +10,6 @@ Outputs the site’s global main navigation based on path and included `pages` a label: 'Products', url: '[[folderName]]/products' }, - { - label: 'Plans', - url: '[[folderName]]/plans' - }, { label: 'Donations', url: '[[folderName]]/donations' diff --git a/example-templates/src/shop/_private/layouts/index.twig b/example-templates/src/shop/_private/layouts/index.twig index ae519a31d1..139ce6df7f 100755 --- a/example-templates/src/shop/_private/layouts/index.twig +++ b/example-templates/src/shop/_private/layouts/index.twig @@ -80,7 +80,7 @@ Common, top-level layout template. {% endfor %} {% endfor %} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('Notices dismissed') }} {{ hiddenInput('clearNotices') }} {{ csrfInput() }} diff --git a/example-templates/src/shop/cart/index.twig b/example-templates/src/shop/cart/index.twig index 306d739c54..80176e8bac 100755 --- a/example-templates/src/shop/cart/index.twig +++ b/example-templates/src/shop/cart/index.twig @@ -14,7 +14,7 @@ Outputs cart. {% if cart.lineItems|length %} {{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('Cart updated.'|t) }}
diff --git a/example-templates/src/shop/cart/load.twig b/example-templates/src/shop/cart/load.twig index 563f666899..06b696d1b1 100644 --- a/example-templates/src/shop/cart/load.twig +++ b/example-templates/src/shop/cart/load.twig @@ -6,7 +6,7 @@ Outputs form for collecting a cart number to be loaded. {{ csrfInput() }} - {{ actionInput('commerce/cart/load-cart') }} + {{ actionInput('commerce/cart/load') }} {{ redirectInput('[[folderName]]/cart') }}

diff --git a/example-templates/src/shop/checkout/addresses.twig b/example-templates/src/shop/checkout/addresses.twig index 2a92f0eb18..d5cca0d706 100755 --- a/example-templates/src/shop/checkout/addresses.twig +++ b/example-templates/src/shop/checkout/addresses.twig @@ -19,7 +19,7 @@ Outputs a form for collecting an order’s shipping and billing address.
{{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('Addresses selected.') }} {{ redirectInput(siteUrl('[[folderName]]/checkout/shipping')) }} diff --git a/example-templates/src/shop/checkout/email.twig b/example-templates/src/shop/checkout/email.twig index 56219fb2be..266366b996 100755 --- a/example-templates/src/shop/checkout/email.twig +++ b/example-templates/src/shop/checkout/email.twig @@ -14,7 +14,7 @@
{{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ redirectInput('[[folderName]]/checkout/register-signin') }} {{ successMessageInput('Email address updated.') }} diff --git a/example-templates/src/shop/checkout/options.twig b/example-templates/src/shop/checkout/options.twig index 18685c518c..a88ffcd61c 100755 --- a/example-templates/src/shop/checkout/options.twig +++ b/example-templates/src/shop/checkout/options.twig @@ -32,7 +32,7 @@ {{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ redirectInput(siteUrl('[[folderName]]/checkout/payment')) }} {{ successMessageInput('Options saved.') }} diff --git a/example-templates/src/shop/checkout/payment-method.twig b/example-templates/src/shop/checkout/payment-method.twig index f5ef1c1081..546cac04ba 100644 --- a/example-templates/src/shop/checkout/payment-method.twig +++ b/example-templates/src/shop/checkout/payment-method.twig @@ -20,7 +20,7 @@
{{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ redirectInput(siteUrl('[[folderName]]/checkout/options')) }} {{ successMessageInput('Payment options selected.') }} diff --git a/example-templates/src/shop/checkout/shipping.twig b/example-templates/src/shop/checkout/shipping.twig index 4ddad6b7f0..5795ff5205 100755 --- a/example-templates/src/shop/checkout/shipping.twig +++ b/example-templates/src/shop/checkout/shipping.twig @@ -27,7 +27,7 @@
{{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ redirectInput(siteUrl('[[folderName]]/checkout/payment-method')) }} {{ successMessageInput('Shipping option updated.') }} diff --git a/example-templates/src/shop/donations/index.twig b/example-templates/src/shop/donations/index.twig index e78bfe5ebf..481c4c05e1 100644 --- a/example-templates/src/shop/donations/index.twig +++ b/example-templates/src/shop/donations/index.twig @@ -11,7 +11,7 @@ {% if donation and donation.isAvailable %} {{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('Donation added.'|t) }} {{ redirectInput('[[folderName]]/cart') }} {{ hiddenInput('purchasableId', craft.commerce.donation.id) }} diff --git a/example-templates/src/shop/plans/index.twig b/example-templates/src/shop/plans/index.twig deleted file mode 100755 index 0c004d042a..0000000000 --- a/example-templates/src/shop/plans/index.twig +++ /dev/null @@ -1,164 +0,0 @@ -{% extends '[[folderName]]/_private/layouts' %} - -{# @var plans \craft\commerce\base\Plan[] #} -{% set plans = craft.commerce.getPlans().getAllEnabledPlans() %} - -{% block main %} - -

- {{- 'Plans'|t -}} -

- {% if not plans|length %} -

- {{- 'No plans set up.'|t -}} -

- {% endif %} - - {# @var currentUser \craft\elements\User #} - {% if currentUser %} -
- {% set subscriptions = craft.subscriptions.status(null).userId(currentUser.id).all() %} - - {% if subscriptions|length %} - - - - - - - - - - - {% for subscription in subscriptions %} - - - - - - - {% endfor %} - -
{{ 'Plan'|t }}{{ 'Created'|t }}{{ 'Next Payment'|t }} 
- {% set plan = subscription.plan ?? null %} - {% if plan %} -
- {{ plan.name }} - - {# @var information \craft\elements\Entry #} - {% set information = plan.getInformation() ?? null %} - {% if information %} -
-

{{ 'Plan Information Entry'|t }}

-
    -
  • {{ 'ID' }}: {{ information.id }}
  • -
  • {{ 'Title' }}: {{ information.title }}
  • -
-
-
- {% endif %} -
- {% endif %} - - {% if subscription.isCanceled %} -
- - {{- 'Canceled on {date}.'|t({ date: subscription.dateCanceled|date('Y-m-d') }) -}} - -
- {% endif %} -
- {{ subscription.dateCreated|date('Y-m-d') }} - - {{- subscription.isCanceled - ? 'Expires on {date}.'|t({ date: subscription.nextPaymentDate|date('Y-m-d') }) - : '' - -}} - - - {{- 'Manage'|t -}} - - - {% if subscription.isSuspended and subscription.hasBillingIssues %} - - {{- 'Fix Billing'|t -}} - - {% endif %} - -
- {% else %} -

- {{- 'You do not have any active subscriptions.'|t -}} -

- {% endif %} -
- {% endif %} - - {% if currentUser and plans|length %} -
-

- {{ 'Available Plans'|t }} -

- -
- {% for plan in plans %} - {% set paymentSources = craft.commerce.paymentSources.getAllPaymentSourcesByCustomerId(currentUser.id, plan.gateway.id) %} - -
-
- - {{ csrfInput() }} - {{ actionInput('commerce/subscriptions/subscribe') }} - {{ redirectInput('[[folderName]]/plans') }} - {{ hiddenInput('planUid', plan.uid|hash) }} - -

- {{- plan.name -}} -

- {% if paymentSources|length %} -
- {% tag 'select' with { - name: 'trialDays', - 'data-plan': plan.id, - class: '[[classes.input]]' - } %} - {% for i in [0, 3, 7, 14] %} - {% if i == 0 %} - {{ tag('option', { - value: (plan.uid ~ ':0')|hash, - text: 'No trial period.'|t - }) }} - {% else %} - {{ tag('option', { - value: (plan.uid ~ ':' ~ i)|hash, - text: 'Trial for {n} days.'|t({ n: i }) - }) }} - {% endif %} - {% endfor %} - {% endtag %} -
- {{ tag('button', { - type: 'submit', - class: '[[classes.btn.base]] [[classes.btn.mainColor]]', - text: 'Subscribe'|t - }) }} -
- {% else %} -

- {{- 'You do not have any payment sources set up for {gateway}.'|t({ gateway: plan.gateway.name }) -}} -

- Add Card - {% endif %} -
- -
-
- {% endfor %} -
-
- {% endif %} -{% endblock %} diff --git a/example-templates/src/shop/plans/subscription/index.twig b/example-templates/src/shop/plans/subscription/index.twig deleted file mode 100755 index dec06f877d..0000000000 --- a/example-templates/src/shop/plans/subscription/index.twig +++ /dev/null @@ -1,160 +0,0 @@ -{% extends '[[folderName]]/_private/layouts' %} - -{# @var subscriptionId string #} -{% set subscriptionId = craft.app.request.param('subscription') %} -{# @var subscription \craft\commerce\elements\Subscription #} -{% set subscription = craft.subscriptions() - .id(subscriptionId) - .one() %} - -{% if not subscription or currentUser is null or subscription.userId != currentUser.id %} - {% redirect '[[folderName]]/plans' %} -{% endif %} - -{% block main %} - - -

- {{- 'Manage {plan}'|t({ plan: subscription.plan.name }) -}} -

- - {# @var information \craft\elements\Entry #} - {% set information = subscription.plan.getInformation() ?? null %} -
-
- - {{- 'Subscription Information'|t -}} - -
-
 
- {% if information %} -
- {{- 'Plan Information Entry'|t -}} -
-
-
    -
  • {{ 'ID'|t }}: {{ information.id }}
  • -
  • {{ 'Title'|t }}: {{ information.title }}
  • -
-
- {% endif %} - {% if subscription.isExpired %} -
{{ 'Expired on'|t }}
-
{{ subscription.dateExpired|date('Y-m-d') }}
- {% else %} - {% if subscription.isCanceled %} -
{{ 'Cancelled on'|t }}
-
{{ subscription.dateCanceled|date('Y-m-d') }}
-
{{ 'Expires on'|t }}
-
{{ subscription.nextPaymentDate|date('Y-m-d') }}
- {% if subscription.canReactivate() %} -
-
-
- {{ csrfInput() }} - {{ actionInput('commerce/subscriptions/reactivate') }} - {{ hiddenInput('subscriptionUid', subscription.uid|hash) }} - {{ redirectInput('[[folderName]]/plans') }} - {{ tag('button', { - type: 'submit', - class: '[[classes.btn.base]] [[classes.btn.mainColor]]', - text: 'Reactivate'|t - }) }} -
-
- {% endif %} - {% else %} -
{{ 'Payment Amount'|t }}
-
{{ subscription.getNextPaymentAmount() }}
-
{{ 'Next Payment'|t }}
-
{{ subscription.nextPaymentDate|date('Y-m-d') }}
-
 
-
-
- {{ csrfInput() }} - {{ actionInput('commerce/subscriptions/cancel') }} - {{ hiddenInput('subscriptionUid', subscription.uid|hash) }} - {{ redirectInput('[[folderName]]/plans') }} - - {{ subscription.plan.getGateway().getCancelSubscriptionFormHtml(subscription)|raw }} - - {{ tag('button', { - type: 'submit', - class: '[[classes.btn.base]] [[classes.btn.grayColor]]', - text: 'Unsubscribe'|t - }) }} -
-
- {% endif %} - {% endif %} -
- - {% if not subscription.isCanceled and not subscription.isExpired and subscription.alternativePlans|length %} -
-

- {{- 'Alternative Plans'|t -}} -

- - - - - - - - - {% for plan in subscription.alternativePlans %} - - - - - {% endfor %} - -
{{ 'Plan'|t }} 
{{ plan.name }} -
- {{ csrfInput() }} - {{ actionInput('commerce/subscriptions/switch') }} - {{ hiddenInput('subscriptionUid', subscription.uid|hash) }} - {{ hiddenInput('planUid', plan.uid|hash) }} - {{ redirectInput('[[folderName]]/plans') }} - - {{ plan.gateway.getSwitchPlansFormHtml(subscription.plan, plan)|raw }} - - {{ tag('button', { - type: 'submit', - class: '[[classes.btn.base]] [[classes.btn.mainColor]]', - text: 'Switch'|t - }) }} -
-
-
- {% endif %} - - {# @var payments \craft\commerce\models\subscriptions\SubscriptionPayment[] #} - {% set payments = subscription.getAllPayments() %} - {% if payments|length %} -

- {{- 'Payment History'|t -}} -

- - - - - - - - -
{{ 'Date'|t }}{{ 'Amount'|t }}
- - {% for payment in payments %} - - - {{ payment.paymentDate|date("Y-m-d H:i") }} - - - {{ payment.paymentCurrency }} {{ payment.paymentAmount }} - - - {% endfor %} - - {% endif %} -{% endblock %} diff --git a/example-templates/src/shop/plans/update-billing-details.twig b/example-templates/src/shop/plans/update-billing-details.twig deleted file mode 100755 index 9ca5b5b6cb..0000000000 --- a/example-templates/src/shop/plans/update-billing-details.twig +++ /dev/null @@ -1,55 +0,0 @@ -{% extends '[[folderName]]/_private/layouts' %} - -{# @var subscriptionUid string #} -{% set subscriptionUid = craft.app.request.getParam('subscription') %} -{# @var subscription \craft\commerce\elements\Subscription #} -{% set subscription = craft.subscriptions() - .status(null) - .uid(subscriptionUid) - .one() %} - -{% block main %} - - - {# @var currentUser \craft\elements\User #} - {% if currentUser is null or not subscriptionUid or not subscription %} - {% exit 404 %} - {% endif %} - - {% if subscription.subscriber.id != currentUser.id %} - {% exit 404 %} - {% endif %} - - {% if subscription.isExpired == true %} - {% exit 404 %} - {% endif %} - - {% if subscription.isCanceled == true %} - {% exit 404 %} - {% endif %} - - {% set planName = subscription.getPlan().name %} - -
-
- {% if subscription.isSuspended and subscription.hasBillingIssues %} -

- {{- 'Billing issue for subscription to {plan}'|t({ plan: planName }) -}} -

- -
{{ subscription.getBillingIssueDescription() }}
- -
-
- {{ redirectInput('[[folderName]]/plans') }} - {{ subscription.getBillingIssueResolveFormHtml()|raw }} -
-
- {% else %} -

- {{- 'No issues with subscription to {plan}'|t({ plan: planName }) -}} -

- {% endif %} -
-
-{% endblock %} diff --git a/example-templates/src/shop/products/_includes/grid.twig b/example-templates/src/shop/products/_includes/grid.twig index 86cf5ae4e3..fc7e267989 100644 --- a/example-templates/src/shop/products/_includes/grid.twig +++ b/example-templates/src/shop/products/_includes/grid.twig @@ -29,7 +29,7 @@

{{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('{product} added to cart.'|t({ product: product.title })) }} diff --git a/example-templates/src/shop/products/_product.twig b/example-templates/src/shop/products/_product.twig index ed3a44a293..4beed9a21f 100644 --- a/example-templates/src/shop/products/_product.twig +++ b/example-templates/src/shop/products/_product.twig @@ -32,7 +32,7 @@ {{ csrfInput() }} - {{ actionInput('commerce/cart/update-cart') }} + {{ actionInput('commerce/cart/update') }} {{ successMessageInput('{product} added to cart.'|t({ product: product.title })) }} diff --git a/lang/de/commerce.php b/lang/de/commerce.php new file mode 100644 index 0000000000..1900277d17 --- /dev/null +++ b/lang/de/commerce.php @@ -0,0 +1,1424 @@ + '(neuer Preis)', + '(of original price)' => '(vom ursprünglichen Preis)', + '(off original price)' => '(Nachlass vom ursprünglichen Preis)', + 'A cart number must be specified.' => 'Es muss eine Warenkorbnummer angegeben werden.', + 'A cart recovery link has been sent to {email}.' => 'Ein neuer Warenkorb-Wiederherstellungslink wurde an {email} gesendet.', + 'A cart recovery link will be sent to {email}.' => 'Ein Warenkorb-Wiederherstellungslink wird an {email} gesendet.', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'Eine benutzerfreundliche Referenznummer auf Grundlage dieses Formats wird erstellt, sobald der Warenkorb abgeschlossen und die Artikel darin bestellt wurden. Beispielsweise {ex1} oder
{ex2}. Das Ergebnis dieses Formats muss einmalig sein.', + 'A new download link has been sent to {email}' => 'Ein neuer Download-Link wurde an {email} gesendet', + 'A new download link will be sent to {email}' => 'Ein neuer Download-Link wird an {email} gesendet', + 'A valid email is required to create a customer.' => 'Eine gültige E-Mail wird erfordert, um einen Kunden zu erstellen.', + 'Accept' => 'Akzeptieren', + 'Accepted' => 'Akzeptiert', + 'Actions' => 'Aktionen', + 'Active Carts' => 'Aktive Einkaufskörbe', + 'Active subscriptions' => 'Aktive Abonnements', + 'Active' => 'Aktiv', + 'Add Address' => 'Adresse hinzufügen', + 'Add a coupon' => 'Coupon hinzufügen', + 'Add a custom line item' => 'Benutzerdefinierten Einzelposten hinzufügen', + 'Add a line item' => 'Einen Einzelposten hinzufügen', + 'Add a product' => 'Ein Produkt hinzufügen', + 'Add a variant' => 'Variante hinzufügen', + 'Add an adjustment' => 'Eine Anpassung hinzufügen', + 'Add an item' => 'Posten hinzufügen', + 'Add an option' => 'Eine Option hinzufügen', + 'Add catalog price' => 'Katalogpreis hinzufügen', + 'Add' => 'Hinzufügen', + 'Additional Actions' => 'Zusätzliche Aktionen', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'Zusätzliche Empfänger, die diese E-Mail erhalten sollen. Twig-Code kann hier verwendet werden.', + 'Address 1' => 'Adresse 1', + 'Address 2' => 'Adresse 2', + 'Address 3' => 'Adresse 3', + 'Address Line 1' => 'Adresszeile 1', + 'Address Line 2' => 'Adresszeile 2', + 'Address Updated.' => 'Adresse aktualisiert.', + 'Address copied to user.' => 'Adresse an Benutzer kopiert.', + 'Address not found.' => 'Adresse nicht gefunden.', + 'Adjust Quantity' => 'Menge anpassen', + 'Adjust by' => 'Anpassen durch', + 'Adjust price when included rate is disqualified?' => 'Preis anpassen, wenn der enthaltene Steuersatz nicht dafür qualifiziert ist?', + 'Adjustments' => 'Anpassungen', + 'Admin Notices' => 'Administratorhinweise', + 'Administrative Area Code of Origin' => 'Code des Verwaltungsgebiets', + 'Advanced' => 'Erweitert', + 'All Orders' => 'Alle Bestellungen', + 'All Totals' => 'Alle Summen', + 'All Transfers' => 'Alle Übertragungen', + 'All active subscriptions' => 'Alle aktive Abonnements', + 'All customers' => 'Alle Kunden', + 'All products' => 'Alle Produkte', + 'All variants must have a SKU.' => 'Alle Varianten müssen eine SKU haben.', + 'All' => 'Alle', + 'Allow Checkout Without Payment' => 'Bestellung ohne Zahlung erlauben', + 'Allow Empty Cart On Checkout' => 'Leeren Warenkorb an der Kasse erlauben', + 'Allow Partial Payment On Checkout' => 'Teilzahlung an der Kasse erlauben', + 'Allow out of stock purchases' => 'Erlauben Sie Käufe von nicht vorrätigen Artikeln', + 'Allow' => 'Zulassen', + 'Allowed Qty' => 'Höchstmenge', + 'Alternative Phone' => 'Alternative Telefonnummer', + 'Amount' => 'Menge', + 'An ID must be provided' => 'Ein Ausweis muss beigestellt werden', + 'An error occurred while generating this PDF.' => 'Beim Erstellen dieser PDF ist ein Fehler aufgetreten.', + 'Any' => 'Beliebig', + 'Anywhere' => 'Überall', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => 'Sind Sie sicher, dass Sie den Abonnementplan „{name}“ wirklich archivieren möchten? Dadurch werden die bestehenden Abonnements NICHT gekündigt.', + 'Are you sure you want to capture this transaction?' => 'Sind Sie sicher, dass Sie diese Transaktion erfassen möchten?', + 'Are you sure you want to complete this order?' => 'Sind Sie sicher, dass Sie diese Bestellung abschließen möchten?', + 'Are you sure you want to delete the selected orders?' => 'Sind Sie sicher, dass Sie die ausgewählten Bestellungen löschen möchten?', + 'Are you sure you want to delete the selected product and its variants?' => 'Sind Sie sicher, dass Sie die ausgewählten Produkte und ihre Varianten löschen möchten?', + 'Are you sure you want to delete this shipping rule?' => 'Möchten Sie diese Versandregel wirklich löschen?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => 'Sind Sie sicher, dass Sie "{name}" und alle seine Produkte löschen möchten? Bitte vergewissern Sie sich, dass Sie eine Sicherungskopie Ihrer Datenbank besitzen, bevor Sie diese Löschaktion ausführen.', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => 'Sind Sie sicher, dass Sie „{name}“ löschen möchten? Dies wird alle Einzelposten mit diesem Status zu „Kein Status“ umstellen.', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'Sind Sie sicher, dass Sie diese Übertragung als ausstehend markieren möchten? Sie wird am Zielort als eingehend angezeigt.', + 'Are you sure you want to overwrite the billing address?' => 'Sind Sie sicher, dass Sie die Rechnungsadresse überschreiben möchten?', + 'Are you sure you want to overwrite the shipping address?' => 'Sind Sie sicher, dass Sie die Lieferadresse überschreiben möchten?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'Möchten Sie diesen Shop und alle darin enthaltenen Artikel wirklich dauerhaft löschen?', + 'Are you sure you want to refund this transaction?' => 'Sind Sie sicher, dass Sie diese Transaktion erstatten möchten?', + 'Are you sure you want to remove this customer?' => 'Sind Sie sicher, dass Sie diesen Kunden entfernen möchten?', + 'Are you sure you want to save this as a new shipping rule?' => 'Möchten Sie dies wirklich als eine neue Versandregel speichern?', + 'Are you sure you want to send email: {name}?' => 'Sind Sie sicher dass Sie die E-Mail „{name}“ versenden möchten?', + 'At least one site must be enabled for the product type.' => 'Mindestens eine Website muss für den Produkttyp aktiviert sein.', + 'Attempted Payments' => 'Versuchte Zahlungen', + 'Attention' => 'Achtung', + 'Authorize Only (Manually Capture)' => 'Nur autorisieren (Manuelle Erfassung)', + 'Auto Set Cart Shipping Method Option' => 'Versandart des Warenkorbs autom. setzen', + 'Auto Set New Cart Addresses' => 'Neue Warenkorbadressen autom. setzen', + 'Auto Set Payment Source' => 'Zahlungsquelle autom. setzen', + 'Automatic SKU Format' => 'Automatisches Format für die Bestandseinheit (SKU)', + 'Available Shipping Categories' => 'Verfügbare Versandkategorien', + 'Available Tax Categories' => 'Verfügbare Steuerkategorien', + 'Available for purchase' => 'Für den Kauf verfügbar', + 'Available for purchase?' => 'Für den Kauf verfügbar?', + 'Available inventory for "{description}" has gone below zero.' => 'Der verfügbare Lagerbestand für „{description}“ ist unter null gesunken.', + 'Available to Product Types' => 'Für Produkttypen verfügbar', + 'Available' => 'Verfügbar', + 'Available?' => 'Verfügbar?', + 'Average Order Total' => 'Durchschnittlicher Bestellungspreis', + 'Average' => 'Durchschnitt', + 'BCC’d Recipient' => 'Empfänger auf BCC gesetzt', + 'Bad Request' => 'Ungültige Anfrage', + 'Bad address ID.' => 'Ungültige Lieferadressen-ID.', + 'Bad order ID.' => 'Ungültige Bestellungs-ID.', + 'Base Price' => 'Grundpreis', + 'Base Promotional Price' => 'Grundpreis der Aktion', + 'Base Rate' => 'Basissatz', + 'Base' => 'Basis', + 'Bcc' => 'BCC', + 'Billing Address' => 'Rechnungsadresse', + 'Billing Business Name' => 'Geschäftsname (Rechnung)', + 'Billing First Name' => 'Vorname (Rechnung)', + 'Billing Full Name' => 'Vollständiger Name (Rechnung)', + 'Billing Last Name' => 'Nachname (Rechnung)', + 'Billing address required.' => 'Rechnungsadresse erforderlich.', + 'Billing detail update URL' => 'URL zum Aktualisieren der Zahlungsinformationen', + 'Billing issues' => 'Rechnungprobleme', + 'Billing' => 'Abrechnung', + 'Both (Line item price + Line item shipping costs)' => 'Beide (Einzelpostenpries + Einzelposten-Versandkosten)', + 'Business ID' => 'Unternehmens-ID', + 'Business Name' => 'Name des Unternehmens', + 'Business Tax ID' => 'Gewerbesteuer-ID', + 'CC’d Recipient' => 'Empfänger auf CC gesetzt', + 'CVV' => 'CVC', + 'Can be used as an internal reference.' => 'Kann als interne Referenz verwendet werden.', + 'Can not complete payment for missing transaction.' => 'Zahlung für fehlende Transaktion konnte nicht abgeschlossen werden.', + 'Can not create a new order' => 'Neue Bestellung konnte nicht erstellt werden', + 'Can not find an order to pay.' => 'Konnte keine zu Bestellung zum Bezahlen finden.', + 'Can not find enabled email.' => 'Es wurde keine aktivierte E-Mail-Addresse gefunden.', + 'Can not find order' => 'Bestellung konnte nicht gefunden werden', + 'Can not find order.' => 'Bestellung konnte nicht gefunden werden.', + 'Can not find the transaction to refund' => 'Die zu erstattende Transaktion konnte nicht gefunden werden', + 'Can not move between these inventory types.' => 'Sie können nicht zwischen diesen Bestandstypen wechseln.', + 'Can not refund amount greater than the remaining amount' => 'Es kann kein Betrag über dem Restbetrag zurückerstattet werden', + 'Cancel subscription' => 'Abonnement stornieren', + 'Cancel with gateway now' => 'Jetzt über das Zahlungsportal stornieren', + 'Cancel' => 'Abbrechen', + 'Cancellation date' => 'Stornierungsdatum', + 'Cancellation' => 'Stornierung', + 'Cannot switch plans for this subscription.' => 'Pläne für dieses Abonnement können nicht gewechselt werden.', + 'Can’t preview this email.' => 'E-Mail-Vorschau für diese E-Mail nicht verfügbar.', + 'Capture payment' => 'Zahlung erfassen', + 'Capture' => 'Erfassen', + 'Card Holder' => 'Karteninhaber', + 'Card Number' => 'Kartennummer', + 'Card' => 'Karte', + 'Cart Recovery Link' => 'Warenkorb-Wiederherstellungslink', + 'Cart forgotten.' => 'Warenkorb vergessen.', + 'Cart updated.' => 'Warenkorb aktualisiert.', + 'Cart {number}' => 'Warenkorb {number}', + 'Catalog Pricing Rule' => 'Katalogpreisregel', + 'Catalog pricing rule description.' => 'Beschreibung der Katalogpreisregel.', + 'Catalog pricing rule saved.' => 'Katalogpreisregel gespeichert.', + 'Catalog pricing rules deleted.' => 'Katalogpreisregeln gelöscht.', + 'Catalog pricing rules updated.' => 'Katalogpreisregeln aktualisiert.', + 'Categories Relationship Type' => 'Kategorien Beziehungstyp', + 'Categories' => 'Kategorien', + 'Category Rate Overrides' => 'Preiskategorie-Overrides', + 'Centimeters (cm)' => 'Zentimeter (cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'Das Ändern dieses Wertes könnte Ihre Fähigkeit, bestehende Transaktionen zurück zu erstatten, beeinflussen.', + 'Choose a color to represent the order’s status' => 'Wählen Sie eine Farbe, die den Status der Bestellung repräsentieren soll', + 'Choose a new customer' => 'Neuen Kunden wählen', + 'Choose adjustment values to include when calculating the product revenue total.' => 'Wählen Sie Anpassungswerte, die bei der Berechnung der Summe der Produktumsätze berücksichtigt werden sollen.', + 'Choose the currency’s ISO code.' => 'Wählen Sie den ISO-Code der Währung aus.', + 'Choose the destination inventory location for the existing on hand stock.' => 'Wählen Sie den Ziellagerbestand für den vorhandenen Lagerbestand.', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'Wählen Sie, in welchen Websites dieser Produkttyp verfügbar sein soll, und konfigurieren Sie die sitespezifischen Einstellungen.', + 'City' => 'Stadt', + 'Clear counter' => 'Zähler zurücksetzen', + 'Clear notices' => 'Anmerkungen entfernen', + 'Close' => 'Schließen', + 'Code' => 'Code', + 'Collated PDF' => 'Zusammengestellte PDF', + 'Color' => 'Farbe', + 'Commerce Products' => 'Commerce Produkte', + 'Commerce Settings' => 'Commerce Einstellungen', + 'Commerce Variants' => 'Commerce-Varianten', + 'Commerce email “{email}” could not be sent for order “{order}”.' => 'Die Commerce E-Mail "{email}" konnte nicht für die Bestellung "{order}" gesendet werden.', + 'Commerce order exports' => 'Exporte von Commerce Bestellungen', + 'Commerce' => 'Commerce', + 'Committed' => 'Zugewiesen', + 'Completed Email' => 'Abgeschlossene E-Mail-Adresse', + 'Completed' => 'Abgeschlossen', + 'Completing order failed.' => 'Bestellungsabschluss fehlgeschlagen.', + 'Condition' => 'Bedingung', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'Die Bedingungen werden hier mit einer Bestellung abgeglichen, bevor die Regeln abgesucht werden. Dies ist nützlich, wenn Sie die Verfügbarkeit einer Methode frühzeitig prüfen möchten oder wenn es gemeinsame Bedingungen für alle Regeln für diese Methode gibt.', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'Die Bedingungen werden hier mit denen des Kunden abgeglichen, bevor die Regeln abgesucht werden. Dies ist nützlich, wenn Sie die Verfügbarkeit einer Methode frühzeitig prüfen möchten oder wenn es gemeinsame Bedingungen für alle Regeln für diese Methode gibt.', + 'Conditions' => 'Bedingungen', + 'Contains Purchasables' => 'Enthält kaufbare Artikel', + 'Control Panel Settings' => 'Control Panel Einstellungen', + 'Control panel' => 'Control Panel', + 'Conversion Rate' => 'Wechselkurs', + 'Converted Price' => 'Umgerechneter Preis', + 'Copied!' => 'Kopiert!', + 'Copy the URL' => 'Die URL kopieren', + 'Copy to {location}' => 'Zu {location} kopieren', + 'Copy' => 'Kopieren', + 'Costs' => 'Kosten', + 'Could not archive gateway.' => 'Gateway konnte nicht archiviert werden.', + 'Could not cancel “{reference}”.' => '"{reference}" konnte nicht storniert werden.', + 'Could not create the payment source.' => 'Die Zahlungsquelle konnte nicht erstellt werden.', + 'Could not delete shipping rule' => 'Lieferregel konnte nicht gelöscht werden', + 'Could not delete shipping zone' => 'Lieferzone konnte nicht gelöscht werden', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => 'Fehler beim Löschen von {count, number} {count, plural, one{Versandkategorie} other{Versandkategorien}}.', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => 'Fehler beim Löschen von {count, number} {count, plural, one{Versandmethode} other{Versandmethoden}} und Regeln.', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => 'Fehler beim Löschen von {count, number} {count, plural, one{Steuerkategorie} other{Steuerkategorien}}.', + 'Could not find the email or template.' => 'E-Mail oder Vorlage konnte nicht gefunden werden.', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => 'Bestellung {number} konnte nicht als abgeschlossen markiert werden. Speichern der Bestellung ist beim Bestellungsabschluss aufgrund von Fehlern gescheitert: {order}', + 'Could not reactivate “{reference}”.' => '"{reference}" konnte nicht reaktiviert werden.', + 'Could not send email' => 'E-Mail konnte nicht versendet werden', + 'Could not switch “{reference}” to “{plan}”.' => '"{reference}" konnte nicht zu "{plan}" gewechselt werden.', + 'Could not update orders address.' => 'Bestellungsadresse konnte nicht aktualisiert werden.', + 'Couldn’t archive Line Item Status.' => 'Einzelpostenstatus konnte nicht archiviert werden.', + 'Couldn’t archive Order Status.' => 'Bestellungsstatus konnte nicht archiviert werden.', + 'Couldn’t capture transaction.' => 'Transaktion konnte nicht erfasst werden.', + 'Couldn’t capture transaction: {message}' => 'Die Transaktion konnte nicht erfasst werden: {message}', + 'Couldn’t delete email.' => 'E-Mail konnte nicht gelöscht werden.', + 'Couldn’t delete the payment source.' => 'Die Zahlungsquelle konnte nicht gelöscht werden.', + 'Couldn’t get order.' => 'Bestellung konnte nicht empfangen werden.', + 'Couldn’t recalculate order.' => 'Konnte Bestellung nicht erneut berechnen.', + 'Couldn’t refund transaction.' => 'Transaktion konnte nicht erstattet werden.', + 'Couldn’t refund transaction: {message}' => 'Konnte die Transaktion nicht erstatten: {message}', + 'Couldn’t reorder Line Item Statuses.' => 'Status von Einzelposten konnten nicht neu sortiert werden.', + 'Couldn’t reorder Order Statuses.' => 'Die Bestellstatus konnten nicht neu sortiert werden.', + 'Couldn’t reorder PDFs.' => 'PDFs konnten nicht neu sortiert werden.', + 'Couldn’t reorder discounts.' => 'Die Rabatte konnten nicht neu sortiert werden.', + 'Couldn’t reorder gateways.' => 'Gateways konnten nicht neu sortiert werden.', + 'Couldn’t reorder plans.' => 'Pläne konnten nicht neu geordnet werden.', + 'Couldn’t reorder rules.' => 'Regeln konnten nicht umsortiert werden.', + 'Couldn’t reorder sale.' => 'Aktion konnte nicht umsortiert werden.', + 'Couldn’t reorder sales.' => 'Aktionen konnten nicht umsortiert werden.', + 'Couldn’t reorder statuses.' => 'Status konnten nicht umsortiert werden.', + 'Couldn’t reorder stores.' => 'Shops konnten nicht umsortiert werden.', + 'Couldn’t save PDF.' => 'PDF konnte nicht gespeichert werden.', + 'Couldn’t save catalog pricing rule.' => 'Katalogpreisregel konnte nicht gespeichert werden.', + 'Couldn’t save currency.' => 'Währung konnte nicht gespeichert werden.', + 'Couldn’t save discount.' => 'Rabatt konnte nicht gespeichert werden.', + 'Couldn’t save email.' => 'E-Mail konnte nicht gespeichert werden.', + 'Couldn’t save gateway.' => 'Gateway konnte nicht gespeichert werden.', + 'Couldn’t save inventory location.' => 'Lagerbestandsort konnte nicht gespeichert werden.', + 'Couldn’t save line item status.' => 'Einzelpostenstatus konnte nicht gespeichert werden.', + 'Couldn’t save order fields.' => 'Bestellfelder konnten nicht gespeichert werden.', + 'Couldn’t save order status.' => 'Bestellstatus konnte nicht gespeichert werden.', + 'Couldn’t save order.' => 'Die Bestellung konnte nicht gespeichert werden.', + 'Couldn’t save product type.' => 'Produkttyp konnte nicht gespeichert werden.', + 'Couldn’t save sale.' => 'Aktion konnte nicht gespeichert werden.', + 'Couldn’t save settings.' => 'Einstellungen konnten nicht gespeichert werden.', + 'Couldn’t save shipping category.' => 'Die Versandkategorie konnte nicht gespeichert werden.', + 'Couldn’t save shipping method.' => 'Versandart konnte nicht gespeichert werden.', + 'Couldn’t save shipping rule.' => 'Versandregel konnte nicht gespeichert werden.', + 'Couldn’t save shipping zone.' => 'Versandzone konnte nicht gespeichert werden.', + 'Couldn’t save store.' => 'Shop konnte nicht gespeichert werden.', + 'Couldn’t save subscription fields.' => 'Abonnementfelder konnten nicht gespeichert werden.', + 'Couldn’t save subscription plan.' => 'Abonnementplan konnte nicht gespeichert werden.', + 'Couldn’t save subscription.' => 'Abonnement konnte nicht gespeichert werden.', + 'Couldn’t save tax category.' => 'Steuerklasse konnte nicht gespeichert werden.', + 'Couldn’t save tax rate.' => 'Steuersatz konnte nicht gespeichert werden.', + 'Couldn’t save tax zone.' => 'Steuerzone konnte nicht gespeichert werden.', + 'Couldn’t save transfer fields.' => 'Übertragungsfelder konnten nicht gespeichert werden.', + 'Couldn’t update catalog pricing rule statuses.' => 'Status der Katalogpreisregeln konnte nicht aktualisiert werden.', + 'Couldn’t update status.' => 'Status konnte nicht aktualisiert werden.', + 'Couldn’t updated sales status.' => 'Aktionsstatus konnte nicht aktualisiert werden.', + 'Country Code of Origin' => 'Land – Ursprünglicher Code', + 'Country List' => 'Länderliste', + 'Country not allowed.' => 'Land nicht erlaubt.', + 'Country' => 'Land', + 'Coupon Code' => 'Coupon-Code', + 'Coupon can not apply discount to this order due to address mismatch.' => 'Der Coupon kann aufgrund einer Adressabweichung keinen Rabatt auf diese Bestellung anwenden.', + 'Coupon can not apply discount to this order due to customer mismatch.' => 'Der Coupon kann aufgrund einer Unstimmigkeit seitens des Kunden keinen Rabatt auf diese Bestellung gewähren.', + 'Coupon can not apply discount to this order.' => 'Der Coupon kann keinen Rabatt auf diese Bestellung anwenden.', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'Gutscheincode “{code}” wird bereits vom Rabatt “{name}” verwendet.', + 'Coupon codes cannot be blank.' => 'Coupon-Codes dürfen nicht leer sein.', + 'Coupon codes must be unique.' => 'Coupon-Codes müssen einzigartig sein.', + 'Coupon format is required and must contain at least one `#`.' => 'Das Coupon-Format ist erforderlich und muss mindestens ein `#` enthalten.', + 'Coupon not valid.' => 'Coupon ungültig.', + 'Coupon removed: {explanation}' => 'Coupon entfernt: {explanation}', + 'Coupons' => 'Coupons', + 'Craft Commerce - Administration' => 'Craft Commerce - Administration', + 'Craft Commerce - Inventory' => 'Craft Commerce - Lagerbestand', + 'Craft Commerce - Orders' => 'Craft Commerce - Bestellungen', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce - Produkttyp - {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce - Abonnements', + 'Create a Discount' => 'Rabatt erstellen', + 'Create a Subscription Plan' => 'Einen Abonnementplan erstellen', + 'Create a new PDF' => 'Neue PDF erstellen', + 'Create a new catalog pricing rule' => 'Neue Katalogpreisregel erstellen', + 'Create a new currency' => 'Neue Währung erstellen', + 'Create a new email' => 'Eine neue E-Mail erstellen', + 'Create a new gateway' => 'Ein neues Gateway erstellen', + 'Create a new line item status' => 'Neuen Einzelpostenstatus erstellen', + 'Create a new order status' => 'Neuen Bestellstatus anlegen', + 'Create a new product type' => 'Neuen Produkttyp erstellen', + 'Create a new sale' => 'Eine neue Aktion erstellen', + 'Create a new shipping category' => 'Eine neue Versandkategorie erstellen', + 'Create a new shipping method' => 'Eine neue Versandart anlegen', + 'Create a new shipping rule' => 'Eine neue Versandregel erstellen', + 'Create a new tax category' => 'Eine neue Steuerklasse anlegen.', + 'Create a new tax rate' => 'Neuen Steuersatz anlegen', + 'Create a product type' => 'Einen Produkttyp erstellen', + 'Create a shipping zone' => 'Versandzone erstellen', + 'Create a tax zone' => 'Eine Steuerzone anlegen', + 'Create catalog pricing rules' => 'Katalogpreisregeln erstellen', + 'Create customer: “{email}”' => 'Erstelle Kunde: „{email}“', + 'Create discounts' => 'Rabatte erstellen', + 'Create discount…' => 'Rabatt erstellen…', + 'Create rules that allow this discount to match the order.' => 'Erstellen Sie Regeln, die diesen Rabatt für die Bestellung zugehörig machen.', + 'Create rules that allow this discount to match the order’s billing address.' => 'Erstellen Sie Regeln, die diesen Rabatt für die Bestelladresse zugehörig machen.', + 'Create rules that allow this discount to match the order’s customer.' => 'Erstellen Sie Regeln, die diesen Rabatt für den Bestellkunden zugehörig machen.', + 'Create rules that allow this discount to match the order’s shipping address.' => 'Erstellen Sie Regeln, die diesen Rabatt für die Versandadresse zugehörig machen.', + 'Create rules that allow this gateway to match the billing address.' => 'Erstellen Sie Regeln, die es diesem Gateway ermöglichen, die Rechnungsadresse zuzuordnen.', + 'Create rules that allow this gateway to match the order.' => 'Erstellen Sie Regeln, die es diesem Gateway ermöglichen, die Bestellung zuzuordnen.', + 'Create rules that allow this gateway to match the shipping address.' => 'Erstellen Sie Regeln, die es diesem Gateway ermöglichen, die Versandadresse zuzuordnen.', + 'Create sales' => 'Aktionen erstellen', + 'Create sale…' => 'Aktion erstellen…', + 'Created' => 'Erstellt', + 'Credit Card Payment Type' => 'Zahlungsmethode Kreditkarte', + 'Currency Code' => 'Währungs-Code', + 'Currency saved.' => 'Währung gespeichert.', + 'Currency' => 'Währung', + 'Current' => 'laufende Rechnung', + 'Custom 1' => 'Benutzerdefiniert 1', + 'Custom 2' => 'Benutzerdefiniert 2', + 'Custom 3' => 'Benutzerdefiniert 3', + 'Custom 4' => 'Benutzerdefiniert 4', + 'Custom' => 'Benutzerdefiniert', + 'Customer Enabled?' => 'Kunde freigegeben?', + 'Customer ID is required.' => 'Kunden-ID erforderlich.', + 'Customer Note' => 'Kundenanmerkung', + 'Customer Notices' => 'Kundenanmerkungen', + 'Customer data' => 'Kundendaten', + 'Customer' => 'Kunde', + 'Damaged' => 'Beschädigt', + 'Data shown might be outdated.' => 'Die angezeigten Daten können veraltet sein.', + 'Date Authorized' => 'Autorisierungsdatum', + 'Date Created' => 'Erstellungsdatum', + 'Date First Paid' => 'Erstes Zahlungsdatum', + 'Date Ordered' => 'Bestelldatum', + 'Date Paid' => 'Bezahldatum', + 'Date Updated' => 'Aktualisierungsdatum', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'Datum, an dem die Katalogpreisregel aktiviert wird. Keine Angabe für unbegrenztes Startdatum', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'Datum, an dem der Rabatt aktiv wird. Keine Eingabe, wenn das Startdatum nicht begrenzt ist', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'Datum, an dem die Aktion aktiviert wird. Keine Angabe für unbegrenztes Startdatum', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'Datum, an dem die Katalogpreisregel beendet wird. Keine Eingabe, wenn die Aktion unbefristet läuft', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'Datum, zu dem die Rabattaktion beendet sein wird. Keine Eingabe bei unbefristeter Aktion.', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'Datum, an dem die Aktion beendet wird. Keine Eingabe, wenn die Aktion unbefristet läuft', + 'Date' => 'Datum', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'Standard - Erlaubt es dem Preis, negativ zu sein, wenn Rabatte größer als der Wert der Bestellung sind.', + 'Default Category' => 'Standardkategorie', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'Die Standardansicht des Commerce Control Panels. Wenn der Benutzer keine Zugangsrechte besitzt, wird auf eine Seite zurückgegriffen, auf die er Zugriff hat.', + 'Default Order PDF' => 'Standard Bestell-PDF', + 'Default Per Item Rate' => 'Standard Pro Artikel-Satz', + 'Default Percentage Rate' => 'Standardprozentsatz', + 'Default Status?' => 'Standardstatus?', + 'Default View' => 'Standardansicht', + 'Default Weight Rate' => 'Standard Gewichtspreis', + 'Default Zone' => 'Standardzone', + 'Default status?' => 'Standardstatus?', + 'Default to this tax zone when no billing address is set' => 'Standardmäßig auf diese Steuerzone festlegen, wenn keine Rechnungsadresse angegeben wurde', + 'Default to this tax zone when no shipping address is set' => 'Diese Steuerzone als Standard wählen, wenn keine Versandadresse angegeben wurde', + 'Default variant updated.' => 'Standardvariante aktualisiert.', + 'Default' => 'Standard', + 'Default?' => 'Standard?', + 'Delete catalog pricing rules' => 'Katalogpreisregeln löschen', + 'Delete discounts' => 'Rabatte löschen', + 'Delete orders' => 'Bestellungen löschen', + 'Delete sales' => 'Aktionen löschen', + 'Delete' => 'Löschen', + 'Deleting the {location} location.' => 'Löschen des Ortes {location}.', + 'Describe this rule.' => 'Diese Regel beschreiben.', + 'Describe this shipping zone.' => 'Beschreiben Sie diese Versandzone.', + 'Describe this tax zone.' => 'Beschreiben Sie diese Steuerzone.', + 'Description' => 'Beschreibung', + 'Destination Inventory Location' => 'Ziellagerbestandsort', + 'Destination' => 'Zielort', + 'Details' => 'Details', + 'Dimension Unit' => 'Maßeinheit', + 'Dimensions' => 'Abmessungen', + 'Disabled' => 'Deaktiviert', + 'Disallow' => 'Verbieten', + 'Discount all line items' => 'Alle Einzelposten rabattieren', + 'Discount description.' => 'Beschreibung des Rabatts.', + 'Discount is not allowed for the order' => 'Der Rabatt ist für die Bestellung nicht zugelassen', + 'Discount is out of date.' => 'Rabatt ist veraltet.', + 'Discount saved.' => 'Rabatt gespeichert.', + 'Discount the matching items only' => 'Nur die entsprechenden Artikel rabattieren', + 'Discount use has reached its limit.' => 'Die Nutzungsgrenze des Rabattes wurde erreicht.', + 'Discount' => 'Rabatt', + 'Discounted Item Subtotal' => 'Zwischensumme rabattierter Artikel', + 'Discounted Items' => 'Ermäßigte Artikel', + 'Discounts deleted.' => 'Rabatte entfernt.', + 'Discounts reordered.' => 'Rabatte umsortiert.', + 'Discounts updated.' => 'Rabatte aktualisiert.', + 'Discounts' => 'Rabatte', + 'Disqualify with valid business tax ID?' => 'Mit gültiger Gewerbesteueridentifikationsnummer disqualifizieren?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'Nach dem Anwenden dieses Verkaufs keine weiteren passenden Verkäufe mehr suchen.', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => 'Wenden Sie diesen Steuersatz nicht an, wenn die Bestelladresse eine der ausgewählten gültigen Gewerbesteueridentifikationsnummern hat.', + 'Do not attach a PDF to this email' => 'Keine PDF an diese E-Mail anhängen', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'Recalculate bei dieser Bestellung (Nummer: {orderNumber}) nicht aufrufen, wenn Fehler vorhanden sind.', + 'Donation can not be zero.' => 'Spendenbetrag kann nicht null sein.', + 'Donation needs to be an amount.' => 'Spenden müssen ein Betrag sein.', + 'Donation settings saved.' => 'Spendeneinstellungen gespeichert.', + 'Donation' => 'Spende', + 'Donations' => 'Spenden', + 'Done' => 'Fertig', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'Keine nachfolgenden Rabatte bei einer Bestellung anwenden, wenn dieser Rabatt angewendet wird', + 'Download PDF' => 'PDF herunterladen', + 'Download PDF…' => 'PDF herunterladen …', + 'Download Type' => 'Art des Downloads', + 'Download' => 'Herunterladen', + 'Draft' => 'Entwurf', + 'Dummy gateway payment failed.' => 'Platzhalter Gateway Zahlung fehlgeschlagen.', + 'Duplicate options exist' => 'Es existieren Duplikate in den Optionen', + 'Duration' => 'Dauer', + 'EU VAT ID' => 'EU-STEUERNUMMER', + 'Edit address' => 'Adresse bearbeiten', + 'Edit adjustments' => 'Anpassungen bearbeiten', + 'Edit catalog pricing rules' => 'Katalogpreisregeln bearbeiten', + 'Edit discounts' => 'Rabatte bearbeiten', + 'Edit options' => 'Optionen bearbeiten', + 'Edit orders' => 'Bestellungen bearbeiten', + 'Edit sales' => 'Aktionen bearbeiten', + 'Edit' => 'Bearbeiten', + 'Effect' => 'Ausführen', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'Beide (Standard) - Das Beziehungsfeld ist bei der Kaufoption oder Kategorie', + 'Either way' => 'Egal', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'E-Mail PDF Generierungsfehler für E-Mail "{email}". Bestellung: "{order}". PDF-Vorlagenfehler: "{message}" {file}:{line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'Die E-Mail PDF-Vorlage unter "{templatePath}" ist nicht für die E-Mail "{email}" vorhanden. Bestellung: "{order}".', + 'Email Subject' => 'E-Mail-Betreff', + 'Email error. No email address found for order. Order: “{order}”' => 'E-Mail-Fehler. Für die folgende Bestellung wurde keine E-Mail-Adresse gefunden. Bestellung: "{order}"', + 'Email is not enabled.' => 'Die E-Mail ist nicht aktiviert.', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Die Klartext-E-Mail-Vorlage unter "{templatePath}", die zu "{templateParsedPath}" für die E-Mail "{email}" führte ist nicht vorhanden. Bestellung: "{order}".', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parsingfehler der Klartext E-Mail Vorlage für E-Mail "{email}" Bestellung "{order}". Vorlagenfehler: "{message}" {file}:{line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Pfad-Parsingfehler der E-Mail Klartext-Vorlage für E-Mail "{email}" in "Vorlagenpfad". Bestellung "{order}". Vorlagenfehler: "{message}" {file}:{line}', + 'Email required to make payments on a completed order.' => 'Sie benötigen eine E-Mail-Adresse, um Zahlungen für eine abgeschlossene Bestellung vorzunehmen.', + 'Email saved.' => 'E-Mail gespeichert.', + 'Email sent' => 'E-Mail gesendet', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Die E-Mail-Vorlage unter "{templatePath}", die zu "{templateParsedPath}" für die E-Mail „{email}“ führte, ist nicht vorhanden. Bestellung: "{order}".', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parsingfehler in der E-Mail Vorlage für benutzerdefinierte E-Mail "{email}" in "An:". Bestellung "{order}". Vorlagenfehler: "{message}" {file}:{line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-Mail Vorlagen-Parserfehler für E-Mail "{email}" in "BCC:". Bestellung: "{order}". Vorlagenfehler: "{message}" {file}:{line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-Mail-Vorlagen Parserfehler für E-Mail "{email}" in "CC:". Bestellung: "{order}". Vorlagenfehler: "{message}" {file}:{line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-Mail-Vorlagen Parserfehler für E-Mail "{email}" in "Antwort an:". Bestellung: "{order}". Vorlagenfehler: "{message}" {file}:{line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-Mail-Vorlagen Parserfehler für E-Mail "{email}" in "Betreff:". Bestellung: "{order}". Vorlagenfehler: "{message}" {file}:{line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-Mail-Vorlage Parsingfehler für E-Mail "{email}" Bestellung "{order}". Vorlagenfehler: "{message}" {file}:{line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Pfad-Parsingfehler bei der E-Mail Vorlage für E-Mail "{email}" in "Vorlagenpfad". Bestellung "{order}". Vorlagenfehler: "{message}" {file}:{line}', + 'Email unavailable.' => 'E-Mail nicht verfügbar.', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => 'E-Mail "{email}" konnte nicht für die Bestellung "{order}" versendet werden. Fehler: {error} {file}:{line}', + 'Email “{email}” for order {order} was cancelled.' => 'E-Mail "{email}", für die Bestellung "{order}" wurde abgebrochen.', + 'Email' => 'E-Mail', + 'Emails' => 'E-Mails', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'Aktivieren Sie diese Option, wenn dieser Steuersatz in den steuerpflichtigen Einzelpreis einkalkuliert werden soll, anstatt der Bestellung zusätzliche Kosten hinzuzufügen.', + 'Enable structure for products of this type' => 'Struktur für Produkte dieser Art aktivieren', + 'Enable this discount' => 'Diesen Rabatt aktivieren', + 'Enable this rule' => 'Diese Regel aktivieren', + 'Enable this sale' => 'Diese Aktion aktivieren', + 'Enable this shipping method on the front end' => 'Diese Versandart auf dem Frontend verfügbar machen', + 'Enable this shipping rule' => 'Die Versandart aktivieren', + 'Enable this tax rate' => 'Diesen Steuersatz aktivieren', + 'Enabled for customers to select during checkout?' => 'Ist den Kunden die Auswahl an der Kasse gestattet?', + 'Enabled for customers to select?' => 'Wurde die Auswahl für Kunden aktiviert?', + 'Enabled' => 'Aktiviert', + 'Enabled?' => 'Aktiviert?', + 'End Date' => 'Enddatum', + 'Enter SKU' => 'Bestandseinheit (SKU) eingeben', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'Geben Sie einen verständlichen Namen für diesen Steuersatz ein, der im Control Panel verwendet werden soll.', + 'Enter a percentage like {ex1} or {ex2}.' => 'Geben Sie einen Prozentsatz ein, z. B. {ex1} oder {ex2}.', + 'Enter coupon code' => 'Gutscheincode eingeben', + 'Enter reference' => 'Referenz eingeben', + 'Error refunding transaction: {transactionHash}' => 'Fehler bei der Zurückerstattung der Transaktion: {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'Jeder neue Shop muss mindestens einer Website zugeordnet werden.', + 'Everywhere' => 'Überall', + 'Example' => 'Beispiel', + 'Exclude this discount for products that are already on promotion' => 'Diesen Rabatt nicht auf Produkte anwenden, die bereits Teil einer Aktion sind', + 'Expired Link' => 'Abgelaufener Link', + 'Expired' => 'Abgelaufen', + 'Expiry Date' => 'Ablaufdatum', + 'Expiry date' => 'Ablaufdatum', + 'Expiry' => 'Verfall', + 'Failed to receive transfer: {error}' => 'Übertragung nicht empfangen: {error}', + 'Failed to send email. Please try again.' => 'E-Mail kann nicht gesendet werden. Bitte versuchen Sie es erneut.', + 'Failed to start' => 'Konnte nicht gestartet werden', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => 'Fehler beim Aktualisieren {num, plural, =1{des Bestellstatus} other{der Bestellstatus}}.', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => 'Fehler beim Aktualisieren des Bestellstatus der {num, plural, =1{Bestellung} other{Bestellungen}}.', + 'Feet (ft)' => 'Fuß (ft)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'Filterbedingungen zur Beschreibung, auf welche Bestellungen diese Regel angewandt werden kann. 0 eingeben, um eine Bedingung auszulassen.', + 'First Name' => 'Vorname', + 'Flat Amount Off Order' => 'Pauschalbetrag abgezogen von der Bestellung', + 'Flat Order Discount Amount Off' => 'Pauschaler Bestellungsrabattbetrag', + 'Free Order Payment Strategy' => 'Zahlungsstrategie für kostenlose Bestellungen', + 'Free Shipping' => 'Kostenloser Versand', + 'Free orders are processed by the payment gateway' => 'Kostenlose Bestellungen werden vom Zahlungsgateway verarbeitet', + 'Free orders complete immediately' => 'Kostenlose Bestellungen schließen sofort ab', + 'Free shipping can only be for whole order or matching items, not both.' => 'Kostenloser Versand kann nur auf die gesamte Bestellung oder auf passende Artikel angewendet werden, nicht auf beides gleichzeitig.', + 'From Name' => 'Absender', + 'Fulfill' => 'Erfüllen', + 'Fulfilled' => 'Erfüllt', + 'Fulfillment' => 'Erfüllung', + 'Full Name' => 'Vollständiger Name', + 'Gateway Code' => 'Gateway Code', + 'Gateway Message' => 'Gatewaynachricht', + 'Gateway Reference' => 'Gateway Referenz', + 'Gateway Response' => 'Antwort des Gateways', + 'Gateway doesn’t support authorize' => 'Gateway unterstützt Autorisierung nicht', + 'Gateway doesn’t support partial refunds.' => 'Gateway unterstützt keine teilweise Rückerstattungen.', + 'Gateway doesn’t support purchase' => 'Gateway unterstützt Kauf nicht', + 'Gateway doesn’t support refunds.' => 'Gateway unterstützt keine Rückerstattungen.', + 'Gateway saved.' => 'Gateway wurde gespeichert.', + 'Gateway' => 'Zahlungseingang', + 'Gateways reordered.' => 'Gateways umsortiert.', + 'Gateways' => 'Gateways', + 'General Settings' => 'Allgemeine Einstellungen', + 'General' => 'Allgemein', + 'Generate' => 'Erzeugen', + 'Generated Coupon Format' => 'Erzeugtes Coupon-Format', + 'Grams (g)' => 'Gramm (g)', + 'Groups for which this sale will be applicable to.' => 'Gruppen, auf die dieses Angebot angewendet werden kann.', + 'HTML Email Template Path' => 'Template-Pfad für HTML-E-Mails', + 'Handle' => 'Kurzname', + 'Harmonized System Code' => 'Code des Harmonisierten Systems', + 'Has Admin Notices' => 'Enthält Administratorhinweise', + 'Has Emails?' => 'Hat E-Mails?', + 'Has Free Shipping' => 'Mit kostenlosem Versand', + 'Has Orders' => 'Hat Bestellungen', + 'Has Purchasable' => 'Hat Kaufoptionen', + 'Has Variants?' => 'Hat Varianten?', + 'Height ({unit})' => 'Höhe ({unit})', + 'Height' => 'Höhe', + 'Hide snapshot' => 'Schattenkopie ausblenden', + 'History' => 'Verlauf', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'Wie lange (in Sekunden) ein PDF-Download-Link gültig bleiben soll, bevor er abläuft. Der Standardwert ist 86400 (24 Stunden).', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => 'Wie häufig eine E-Mail-Adresse diesen Rabatt nutzen darf. Dies gilt für alle vorherigen Bestellungen, egal, ob sie von einem Gast oder Benutzer kommen. Legen Sie hier zero fest für eine unbegrenzte Nutzung durch Gäste oder Benutzer.', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => 'Wie oft ein Benutzer diesen Rabatt in Anspruch nehmen kann. Wenn dieser Wert auf etwas anderes als Null gesetzt wird, ist der Rabatt nur für angemeldete Benutzer verfügbar.', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'Wie oft dieser Rabatt insgesamt von Gästen oder angemeldeten Benutzern genutzt werden kann. Wählen Sie Null für die unbegrenzte Nutzung.', + 'How products should be labeled within the control panel.' => 'Wie Produkte im Control Panel bezeichnet werden sollen.', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'Wie Kaufoptionen und Kategorien zusammenhängen und was die übereinstimmenden Artikel bestimmt. Siehe [Beziehungsterminologie]({link}).', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'So wird dieses Produkt innerhalb eines Posten in einer Bestellung beschrieben. Sie können Tags hinzufügen, die Eigenschaften ausgeben, wie z. B. {ex1} oder {ex2}', + 'How this shipping method will be referred to in templates and forms.' => 'Wie Sie in Ihren Templates und Formularen auf diese Versandart verweisen.', + 'How variants should be labeled within the control panel.' => 'Wie Varianten im Control Panel bezeichnet werden sollen.', + 'How you’ll refer to this PDF in the templates.' => 'Wie Sie in den Vorlagen auf diese PDF Bezug nehmen.', + 'How you’ll refer to this product type in the templates.' => 'Wie Sie sich in den Templates auf diesen Produkttyp beziehen.', + 'How you’ll refer to this shipping category in the templates.' => 'Unter diesem Namen wird diese Versandkategorie in den Vorlagen erscheinen.', + 'How you’ll refer to this status in the templates.' => 'Wie Sie in Ihren Template auf diesen Status verweisen.', + 'How you’ll refer to this subscription plan in the templates.' => 'Die Art und Weise, wie Sie auf diesen Abonnementplan in den Vorlagen verweisen.', + 'How you’ll refer to this tax category in the templates.' => 'Wie Sie sich in den Templates auf diese Steuerklasse beziehen.', + 'ID' => 'ID', + 'IP Address' => 'IP-Adresse', + 'If disabled, this PDF will not be available or sent with emails.' => 'Wenn die Option deaktiviert ist, wird diese PDF nicht verfügbar sein oder mit E-Mails versendet werden.', + 'If disabled, this email will not send.' => 'Wenn die Option deaktiviert ist, wird die E-Mail nicht gesendet.', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => 'Wenn diese Option aktiviert ist und dieser Steuersatz nicht mit der Bestellung übereinstimmt, wird der Betrag vom Einzelpreis im Warenkorb entfernt.', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'Wenn "Nur Autorisieren" ausgewählt ist, müssen Sie Zahlungen manuell erfassen, bevor Gelder auf Ihr Konto überwiesen werden. Der Gateway muss die ausgewählte Option unterstützen.', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => 'Wenn Sie den Prozentsatz als „Nachlass vom reduzierten Artikelpreis“ wählen, wird dieser den „Betrag pro Artikel“ als auch jegliche weitere Rabatte enthalten, die vor diesem angewendet wurden.', + 'Ignore Promotions?' => 'Aktionen ignorieren?', + 'Ignore previous matching sales if this sale matches.' => 'Ignorieren Sie vorherige übereinstimmende Verkäufe, wenn dieser Verkauf übereinstimmt.', + 'Ignore promotional prices when this discount is applied to matching line items' => 'Aktionspreise ignorieren, wenn der Rabatt auf übereinstimmende Einzelposten angewendet wird', + 'Inactive Carts' => 'Inaktive Einkaufskörbe', + 'Inches (in)' => 'Zoll (in)', + 'Include built-in line item tax.' => 'Beziehen Sie die integrierte Einzelpostensteuer mit ein.', + 'Include in price?' => 'In Preis mit einbeziehen?', + 'Include line item discounts.' => 'Beziehen Sie die Einzelpostenrabatte mit ein.', + 'Include line item shipping costs.' => 'Beziehen Sie die Einzelpostenversandkosten mit ein.', + 'Include separate line item tax.' => 'Beziehen Sie eine separate Einzelpostensteuer mit ein.', + 'Included in price?' => 'In Preis mit einbeziehen?', + 'Included' => 'Enthalten', + 'Incoming transfer from Transfer ID: ' => 'Eingehende Übertragung von Übertragung mit ID: ', + 'Incoming' => 'Eingehend', + 'Info' => 'Info', + 'Information linked?' => 'Wurden die Informationen verlinkt?', + 'Information' => 'Information', + 'Invalid JSON' => 'Ungültiges JSON', + 'Invalid Order ID' => 'Ungültige Bestellungs-ID', + 'Invalid VAT ID.' => 'Ungültige USt-IdNr.', + 'Invalid condition syntax' => 'Üngültige Bedingungssyntax', + 'Invalid email.' => 'Ungültige E-Mail-Adresse.', + 'Invalid formula syntax' => 'Ungültige Formelsyntax', + 'Invalid gateway: {value}' => 'Ungültiges Gateway: {value}', + 'Invalid inventory movements.' => 'Ungültige Lagerbestandsbewegungen.', + 'Invalid order condition syntax.' => 'Ungültige Bestellungsbedingungssyntax.', + 'Invalid payment or order. Please review.' => 'Ungültige Zahlung oder Bestellung. Bitte überprüfen.', + 'Invalid payment source ID: {value}' => 'Ungültige Zahlungsquellen-ID: {value}', + 'Invalid store.' => 'Der Shop ist ungültig.', + 'Invalid user.' => 'Ungültiger Benutzer.', + 'Inventory Item' => 'Lagerbestandsposten aktualisiert', + 'Inventory Location' => 'Lagerbestandsort', + 'Inventory Locations' => 'Lagerbestandsorte', + 'Inventory Tracked' => 'Lagerbestand verfolgt', + 'Inventory Transfers' => 'Lagerbestandsübertragungen', + 'Inventory could not be set.' => 'Lagerbestand konnte nicht gesetzt werden.', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => 'Der Lagerbestandsort hat einen zugewiesenen Bestand, die Bestellung(en) müssen erst erfüllt werden.', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => 'Der Lagerbestandsort hat einen zugewiesenen Bestand, die Übertragung(en) müssen erst erfüllt werden.', + 'Inventory location is already deactivated.' => 'Der Lagerbestandsort ist bereits deaktiviert.', + 'Inventory location saved.' => 'Lagerbestandsort wurde gespeichert.', + 'Inventory locations not saved.' => 'Lagerbestandsort wurde nicht gespeichert.', + 'Inventory movement could not be saved.' => 'Die Lagerbestandsverschiebung konnte nicht gespeichert werden.', + 'Inventory movement saved.' => 'Lagerbestandsverschiebung gespeichert.', + 'Inventory updated.' => 'Lagerbestand aktualisiert.', + 'Inventory was not updated.' => 'Lagerbestand nicht aktualisiert.', + 'Inventory' => 'Lagerbestand', + 'Invoice amount' => 'Rechnungsbetrag', + 'Invoice date' => 'Rechnungsdatum', + 'Is Promotable' => 'Ist werbeaktionsfähig', + 'Is Promotional Price?' => 'Ist Aktionspreis?', + 'Is Shippable' => 'Ist lieferbar', + 'Is Taxable' => 'Ist steuerbar', + 'Item Rates' => 'Artikel-Preise', + 'Item Subtotal' => 'Zwischensumme Artikel', + 'Item Total' => 'Artikel Gesamtmenge', + 'Item' => 'Artikel', + 'Items' => 'Artikel', + 'Kilograms (kg)' => 'Kilogramm (kg)', + 'Label' => 'Bezeichnung', + 'Landscape' => 'Querformat', + 'Language' => 'Sprache', + 'Last Name' => 'Nachname', + 'Last Updated' => 'Zuletzt aktualisiert', + 'Leave a category rate override blank to use the rate from above.' => 'Lassen Sie den Kategoriepreis-Override leer, um den Preis von oben zu verwenden.', + 'Leave blank for unlimited uses.' => 'Leer lassen für unbegrenzte Nutzung.', + 'Leave blank if products don’t have URLs' => 'Bei Produkten ohne URL leer lassen', + 'Leave gateway subscription as-is' => 'Gateway-Abonnement unverändert lassen', + 'Length ({unit})' => 'Länge ({unit})', + 'Length' => 'Länge', + 'Let each product choose which sites it should be saved to' => 'Lassen Sie jedes Produkt wählen, zu welchen Websites es gespeichert werden soll', + 'Limit which orders this discount applies to based on its line items.' => 'Schränken Sie die Bestellungen, für die dieser Rabatt gilt, anhand ihrer Einzelposten ein.', + 'Limit which purchasables this sale applies to.' => 'Schränken Sie ein, für welche Kaufoptionen diese Aktion gilt.', + 'Limit' => 'Begrenzung', + 'Line Item Statuses' => 'Einzelpostenstatus', + 'Line Item' => 'Einzelposten', + 'Line Items' => 'Einzelposten', + 'Line item price (minus discounts)' => 'Einzelpostenpreis (abzüglich Rabatte)', + 'Line item shipping cost' => 'Versandkosten für Einzelposten', + 'Line item statuses reordered.' => 'Einzelpostenstatus umsortiert.', + 'Link Duration' => 'Link-Dauer', + 'Link Sent' => 'Link gesendet', + 'Link to a product' => 'Link zu einem Produkt', + 'Link to a variant' => 'Mit einer Variante verlinken', + 'Link' => 'Link', + 'Live' => 'Aktiv', + 'Location' => 'Standort', + 'Locations that should be available for previewing products in this product type.' => 'Standorte, die für die Vorschau von Produkten dieses Produkttyps verfügbar sein sollten.', + 'MM' => 'MM', + 'Make a payment' => 'Eine Zahlung tätigen', + 'Make this the primary store' => 'Als primären Shop verwenden', + 'Manage Inventory' => 'Lagerbestand verwalten', + 'Manage donation settings' => 'Spendeneinstellungen verwalten', + 'Manage general store settings' => 'Allgemeine Geschäftseinstellungen verwalten', + 'Manage inventory locations' => 'Lagerbestandsorte verwalten', + 'Manage inventory stock levels' => 'Lagerbestände verwalten', + 'Manage inventory transfers' => 'Lagerbestandsübertragungen verwalten', + 'Manage orders' => 'Bestellungen verwalten', + 'Manage payment currencies' => 'Zahlungswährungen verwalten', + 'Manage promotions' => 'Werbeaktionen verwalten', + 'Manage shipping' => 'Versand verwalten', + 'Manage store settings' => 'Geschäftseinstellungen verwalten', + 'Manage subscription plans' => 'Abonnementpläne verwalten', + 'Manage subscription' => 'Abonnement verwalten', + 'Manage subscriptions' => 'Abonnements verwalten', + 'Manage taxes' => 'Steuern verwalten', + 'Manage' => 'Verwalten', + 'Mark as Pending' => 'Als ausstehend markieren', + 'Mark as completed' => 'Als abgeschlossen markieren', + 'Match Billing Address' => 'Abhängig von Rechnungsadresse', + 'Match Customer' => 'Abhängig von Kunde', + 'Match Order' => 'Abhängig von Bestellung', + 'Match Orders' => 'Bestellungen abgleichen', + 'Match Product' => 'Produkt abgleichen', + 'Match Purchasable' => 'Abhängig von Kaufoption', + 'Match Shipping Address' => 'Abhängig von Versandadresse', + 'Match Variant' => 'Variante abgleichen', + 'Matching Items' => 'Übereinstimmende Artikel', + 'Max Qty' => 'Max. Menge', + 'Max Uses' => 'Max. Verwendungen', + 'Max Variants' => 'Max. Varianten', + 'Max quantity must greater than min.' => 'Die maximale Menge muss größer sein als die minimale.', + 'Maximum Purchase Quantity' => 'Maximale Bestellmenge', + 'Maximum Total Shipping Cost' => 'Maximale Gesamt-Versandkosten', + 'Maximum allowed quantity' => 'Erlaubte Höchstmenge', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'Maximale Anzahl von betreffenden Artikeln, die bestellt werden können, damit dieser Rabatt wirksam ist. Ein Wert von Null sorgt für ein Überspringen dieser Bedingung.', + 'Maximum order quantity for this item is {num}.' => 'Die maximale Bestellmenge für diesen Artikel beträgt {num}.', + 'Message' => 'Nachricht', + 'Meters (m)' => 'Meter (m)', + 'Millimeters (mm)' => 'Millimeter (mm)', + 'Min Qty' => 'Min. Menge', + 'Min quantity must be less than max.' => 'Die minimale Menge muss größer sein als die maximale.', + 'Minimum Purchase Quantity' => 'Mindestabnahmemenge', + 'Minimum Total Price Strategy' => 'Strategie für den minimalen Gesamtpreis', + 'Minimum Total Shipping Cost' => 'Minimale Gesamt-Versandkosten', + 'Minimum allowed quantity' => 'Erlaubte Mindestmenge', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'Minimale Anzahl von betreffenden Artikeln, die bestellt werden müssen, damit dieser Rabatt wirksam ist.', + 'Minimum order quantity for this item is {num}.' => 'Die Mindestbestellmenge für diesen Artikel beträgt {num}.', + 'Missing Gateway' => 'Fehlendes Gateway', + 'Missing a default inventory location.' => 'Es fehlt ein Standard-Lagerbestandsort.', + 'Move Inventory' => 'Lagerbestand verschieben', + 'Move To' => 'Verschieben nach', + 'Move {qty} from {fromType} to {toType}' => '{qty} von {fromType} nach {toType} verschieben', + 'Move' => 'Verschieben', + 'Movement from deactivated inventory location' => 'Verschieben von deaktiviertem Lagerbestandsort', + 'Movement' => 'Verschieben', + 'Must have at least one variant.' => 'Muss mindestens eine Variante haben.', + 'Name Field' => 'Namensfeld', + 'Name' => 'Name', + 'New Customer' => 'Neukunde', + 'New Customers' => 'Neukunden', + 'New Order' => 'Neue Bestellung', + 'New PDF' => 'Neue PDF', + 'New address' => 'Neue Adresse', + 'New catalog pricing rule' => 'Neue Katalogpreisregel', + 'New currency' => 'Neue Währung', + 'New discount' => 'Neuer Rabatt', + 'New email' => 'Neue E-Mail', + 'New gateway' => 'Neuer Gateway', + 'New line item status' => 'Neuer Einzelpostenstatus', + 'New line items get this status by default when the order is completed' => 'Neue Einzelposten erhalten diesen Status automatisch wenn die Bestellung abgeschlossen ist', + 'New location' => 'Neuer Standort', + 'New order status' => 'Neuer Bestellstatus', + 'New orders get this status by default' => 'Neue Bestellungen erhalten standardmäßig diesen Status', + 'New product type' => 'Neuer Produkttyp', + 'New product' => 'Neues Produkt', + 'New product, choose a type' => 'Neues Produkt, wählen Sie einen Typ', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => 'Neue Produkte sind standardmäßig Teil der ersten für sie verfügbaren Steuerklasse. Sollte keine verfügbar sein, wird diese Kategorie verwendet.', + 'New sale' => 'Neue Aktion', + 'New shipping category' => 'Neue Versandkategorie', + 'New shipping method' => 'Neue Versandart', + 'New shipping rule' => 'Neue Versandregel', + 'New shipping zone' => 'Neue Versandzone', + 'New subscription plan' => 'Neuer Abonnementplan', + 'New tax category' => 'Neue Steuerklasse', + 'New tax rate' => 'Neuer Steuersatz', + 'New tax zone' => 'Neue Steuerzone', + 'New transfer' => 'Neue Übertragung', + 'New {productType} product' => 'Neues Produkt vom Typ {productType}', + 'New' => 'Neue', + 'Next payment' => 'Nächste Zahlung', + 'No Address' => 'Keine Adresse', + 'No PDFs exist yet.' => 'Es gibt noch keine PDFs.', + 'No access given to any specific store management features.' => 'Kein Zugriff auf spezielle Funktionen zur Verwaltung des Shops gewährt.', + 'No additional payment currencies exist yet.' => 'Es existieren noch keine zusätzlichen Bezahlwährungen.', + 'No address' => 'Keine Adresse', + 'No billing address' => 'Keine Rechnungsadresse', + 'No catalog pricing rule exists with the ID “{id}”' => 'Es existiert keine Katalogpreisregel mit der ID "{id}"', + 'No catalog pricing rules exist yet.' => 'Es gibt noch keine Katalogpreisregeln.', + 'No currency exists with the ID “{id}”' => 'Es gibt keine Währung mit der ID "{id}"', + 'No customer email address exists on this cart.' => 'Mit diesem Warenkorb ist keine Kunden E-Mail-Adresse verknüpft.', + 'No description' => 'Keine Beschreibung', + 'No discount exists with the ID “{id}”' => 'Es gibt keinen Rabatt mit der ID "{id}"', + 'No discounts exist yet.' => 'Es existieren noch keine Rabatte.', + 'No donation amount supplied.' => 'Keine Spendenmenge geliefert.', + 'No emails exist yet.' => 'Es existieren noch keine E-Mails.', + 'No inventory changes made.' => 'Keine Lagerbestandsänderungen vorgenommen.', + 'No inventory found.' => 'Kein Lagerbestand gefunden.', + 'No inventory movements made.' => 'Keine Lagerbestandsverschiebungen vorgenommen.', + 'No inventory transactions for this location.' => 'Keine Lagerbestandstransaktionen für diesen Standort.', + 'No new customer selected.' => 'Es wurde kein neuer Kunde ausgewählt.', + 'No order history exists with the ID “{id}”' => 'Es gibt keinen Bestellverlauf mit der ID "{id}"', + 'No order status history items will exist until the cart becomes an order.' => 'Artikel werden erst dann im Bestellverlauf angezeigt, wenn für die Artikel im Warenkorb die Bestellung abgeschlossen wird.', + 'No payment source exists with the ID “{id}”' => 'Es ist keine Zahlungsquelle mit der ID "{id}" vorhanden', + 'No private Note.' => 'Keine private Anmerkung.', + 'No product available.' => 'Kein Produkt verfügbar.', + 'No product types exist yet.' => 'Es existieren noch keine Produkttypen.', + 'No purchasable available.' => 'Keine Kaufoption verfügbar.', + 'No sale exists with the ID “{id}”' => 'Es gibt keine Aktion mit der ID "{id}"', + 'No sales exist yet.' => 'Es existieren noch keine Aktionen.', + 'No shipping address' => 'Keine Lieferadresse', + 'No shipping category exists with the ID “{id}”' => 'Es gibt keine Versandkategorie mit der ID "{id}"', + 'No shipping method exists with the ID “{id}”' => 'Es gibt keine Versandart mit der ID "{id}"', + 'No shipping rule exists with the ID “{id}”' => 'Es gibt keine Versandregel mit der ID "{id}"', + 'No shipping rules exist yet.' => 'Es existieren noch keine Versandregeln.', + 'No shipping zone exists with the ID “{id}”' => 'Es existiert keine Versandzone mit der ID "{id}"', + 'No stats available.' => 'Keine Statistik verfügbar.', + 'No subscription plan exists with the ID “{id}”' => 'Es ist kein Abonnementplan mit der ID "{id}" vorhanden', + 'No subscription plans exist yet.' => 'Es ist noch kein Abonnementplan vorhanden.', + 'No tax category exists with the ID “{id}”' => 'Es gibt keine Steuerklasse mit der ID "{id}"', + 'No tax rate exists with the ID “{id}”' => 'Es gibt keinen Steuersatz mit der ID "{id}"', + 'No tax zone exists with the ID “{id}”' => 'Es gibt keine Steuerzone mit der ID "{id}"', + 'No transactions exist.' => 'Keine Transaktionen existieren.', + 'No user authenticated.' => 'Kein Benutzer authentifiziert.', + 'No' => 'Nein', + 'None on hand' => 'Nicht vorrätig', + 'None' => 'Keine', + 'Not a valid address type' => 'Kein gültiger Adresstyp', + 'Not a valid credit card number.' => 'Keine gültige Kreditkartennummer.', + 'Not all SKUs are unique.' => 'Nicht alle SKUs sind einmalig.', + 'Note' => 'Hinweis', + 'Notes' => 'Anmerkungen', + 'Number of Coupons' => 'Anzahl der Coupons', + 'Number' => 'Zahl', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => 'Von den oben aktivierten Websites, unter welchen Websites sollen Produkte in diesem Produkttyp gespeichert werden?', + 'On Hand' => 'Auf Lager', + 'Only allow this gateway to be used for zero value orders?' => 'Darf dieser Gateway nur bei Bestellungen ohne Wert verwendet werden?', + 'Only match certain purchasables…' => 'Nur bei bestimmten Kaufoptionen …', + 'Only match purchasables related to…' => 'Nur Kaufoptionen in Zusammenhang mit …', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => 'Es werden nur Bestellungen mit den folgenden Bestellstatus berücksichtigt. Lassen Sie das Feld leer, um alle Status zu berücksichtigen.', + 'Only save product to the site they were created in' => 'Produkte nur auf der Website speichern, auf der sie erstellt wurden', + 'Options' => 'Einstellungen', + 'Order Condition Formula' => 'Bestellungsbedingungsformel', + 'Order Description Format' => 'Format für Bestellbeschreibung', + 'Order Details' => 'Bestelldetails', + 'Order Fields' => 'Bestellfelder', + 'Order PDF Download Link' => 'Bestellung-PDF-Download-Link', + 'Order PDF Filename Format' => 'Dateinamensformat für Bestell-PDF', + 'Order Reference Number Format' => 'Format der Bestellreferenznummer', + 'Order Settings' => 'Bestelleinstellungen', + 'Order Site' => 'Bestellseite', + 'Order Status description.' => 'Beschreibung des Bestellstatus.', + 'Order Status' => 'Bestellstatus', + 'Order Statuses' => 'Bestellstatus', + 'Order can not be empty.' => 'Bestellung kann nicht leer sein.', + 'Order count' => 'Bestellungsanzahl', + 'Order customer data removed.' => 'Kundenbestelldaten gelöscht.', + 'Order deleted.' => 'Bestellung gelöscht.', + 'Order fields saved.' => 'Die Bestellungsfelder wurden gespeichert.', + 'Order not found.' => 'Bestellung nicht gefunden.', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => 'Zahlungsdifferenz der Bestellung ist {outstandingBalanceAsCurrency}. Das ist der höchste Wert, der berechnet wird.', + 'Order recalculated.' => 'Bestellung neu berechnet.', + 'Order status saved.' => 'Bestellungsstatus gespeichert.', + 'Order statuses reordered.' => 'Bestellungsstatus umsortiert.', + 'Order total shipping cost' => 'Gesamtlieferkosten der Bestellung', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => 'Versteuerbarer Gesamtbestellpreis (Einzelposten-Zwischensumme + Gesamtrabatte + Gesamtlieferkosten)', + 'Order' => 'Bestellung', + 'Orders (Legacy)' => 'Bestellungen (Veraltet)', + 'Orders deleted.' => 'Bestellungen gelöscht.', + 'Orders not restored.' => 'Bestellungen wurden nicht wiederhergestellt.', + 'Orders restored.' => 'Bestellungen wiederhergestellt.', + 'Orders' => 'Bestellungen', + 'Organization Name' => 'Name der Organisation', + 'Organization Tax ID' => 'Steuernummer der Organisation', + 'Origin and destination cannot be the same.' => 'Ursprung und Zielort können nicht identisch sein.', + 'Origin' => 'Ursprung', + 'Original Price' => 'Ursprünglicher Preis', + 'Original price' => 'Ursprünglicher Preis', + 'Original promotional price' => 'Ursprünglicher Aktionspreis', + 'Other Languages' => 'Andere Sprachen', + 'Other countries' => 'Andere Länder', + 'Outgoing transfer from Transfer ID: ' => 'Ausgehende Übertragung von Übertragung mit ID: ', + 'Overpaid' => 'Überbezahlt', + 'Overrides previous?' => 'Vorherige überschreiben?', + 'PDF Attachment' => 'PDF Anhang', + 'PDF Template Path' => 'PDF-Vorlagenpfad', + 'PDF saved.' => 'PDF gespeichert.', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'PDFs & E-Mails', + 'PDFs' => 'PDFs', + 'Paid Amount' => 'Bezahlter Betrag', + 'Paid Status' => 'Bezahlstatus', + 'Paid' => 'Bezahlt', + 'Paper Orientation' => 'Papierausrichtung', + 'Paper Size' => 'Papiergröße', + 'Partial payment not allowed.' => 'Teilzahlung ist nicht erlaubt.', + 'Partial' => 'Teilweise', + 'Past year' => 'Vergangenes Jahr', + 'Past {num} days' => 'Vergangene {num} Tage', + 'Pay {amount} of {currency} on the order.' => 'Bezahlen Sie {amount} in {currency} für die Bestellung.', + 'Pay' => 'Bezahlen', + 'Payment Amount' => 'Zahlungsbetrag', + 'Payment Currencies' => 'Zahlungswährungen', + 'Payment Gateway' => 'Zahlungsgateway', + 'Payment Method' => 'Zahlungsmethode', + 'Payment error: {message}' => 'Zahlungsfehler: {message}', + 'Payment method issue' => 'Problem mit der Zahlungsmethode', + 'Payment source created.' => 'Zahlungsquelle wurde erstellt.', + 'Payment source deleted.' => 'Zahlungsquelle wurde gelöscht.', + 'Payments' => 'Zahlungen', + 'Pending' => 'Ausstehend', + 'Per Email Address Discount Limit' => 'Rabattlimit pro E-Mail-Adresse', + 'Per Item Amount Off' => 'Rabattbetrag pro Artikel', + 'Per Item Discount' => 'Rabatt pro Artikel', + 'Per Item Percentage Off' => 'Pro Artikel Prozentnachlass', + 'Per Item Rate' => 'Preis je Einheit', + 'Per User Discount Limit' => 'Rabattlimit pro Nutzer', + 'Percentage Rate' => 'Prozentsatz', + 'Phone (Alt)' => 'Telefon (alt)', + 'Phone' => 'Telefon', + 'Pick a plan' => 'Einen Plan auswählen', + 'Plain Text Email Template Path' => 'Klartext-E-Mail Vorlagenpfad', + 'Plan' => 'Plan', + 'Plans reordered.' => 'Pläne umsortiert.', + 'Portrait' => 'Hochformat', + 'Post Date' => 'Veröffentlichungsdatum', + 'Postal Code Formula' => 'Postleitzahl-Formel', + 'Pounds (lb)' => 'Pfund (lb)', + 'Preview' => 'Vorschau', + 'Previous Status' => 'Voriger Status', + 'Price' => 'Preis', + 'Prices' => 'Preise', + 'Pricing Rules' => 'Preisregeln', + 'Pricing jobs are currently running.' => 'Es laufen derzeit Aufgaben zur Preisgestaltung.', + 'Pricing' => 'Preisgestaltung', + 'Primary Billing Address' => 'Hauptrechnungsadresse', + 'Primary Shipping Address' => 'Hauptlieferadresse', + 'Primary payment source updated.' => 'Primäre Zahlungsquelle aktualisiert.', + 'Primary' => 'Primär', + 'Private Note' => 'Private Anmerkung', + 'Product Fields' => 'Produktfelder', + 'Product ID is required.' => 'Produkt-ID erforderlich.', + 'Product Template' => 'Produkt-Template', + 'Product Title Format' => 'Format für Produkttitel', + 'Product Type' => 'Produkttyp', + 'Product Types' => 'Produkttypen', + 'Product URI Format' => 'Produkt-URL Format', + 'Product Variant' => 'Produktvariante', + 'Product Variants' => 'Produktvarianten', + 'Product type saved.' => 'Produkttyp gespeichert.', + 'Product type settings' => 'Produkttyp-Einstellungen', + 'Product' => 'Produkt', + 'Products and Variants deleted.' => 'Produkte und Varianten gelöscht.', + 'Products not restored.' => 'Produkte nicht wiederhergestellt.', + 'Products restored.' => 'Produkte wurden wiederhergestellt.', + 'Products' => 'Produkte', + 'Promotable' => 'Aktionsfähig', + 'Promotable?' => 'Werbeaktionsfähig?', + 'Promotional Amount' => 'Aktionsbetrag', + 'Promotional Price' => 'Aktionspreis', + 'Purchasable Categories' => 'Kategorien der Kaufoption', + 'Purchasable ID and Sale ID are required.' => 'Kaufoptions-ID und Aktions-ID erforderlich.', + 'Purchasable ID is required.' => 'Kaufoptions-ID erforderlich.', + 'Purchasable Type' => 'Typ der Kaufoption', + 'Purchasable' => 'Kaufoption', + 'Purchase (Authorize and Capture Immediately)' => 'Kauf (sofortige Autorisierung und Erfassung)', + 'Purchase Total' => 'Gesamtbetrag', + 'Qty' => 'Menge', + 'Quality Control' => 'Qualitätskontrolle', + 'Quantity' => 'Menge', + 'Rate' => 'Satz', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => '{numOrders, plural, one {}=1{Bestellung} other{Bestellungen}} neu zuweisen', + 'Recalculate order' => 'Bestellung neu berechnen', + 'Receive Inventory' => 'Lagerbestand empfangen', + 'Receive Transfer' => 'Übertragung empfangen', + 'Receive' => 'Empfangen', + 'Received' => 'Empfangen', + 'Recent Orders' => 'Neueste Bestellungen', + 'Recipient' => 'Empfänger', + 'Recover Cart' => 'Warenkorb wiederherstellen', + 'Reduce price' => 'Preis verringern', + 'Reduce the price by a fixed amount' => 'Den Preis um einen festen Betrag verringern', + 'Reduce the price by a percentage of the original price' => 'Den Preis auf einen Prozentsatz des ursprünglichen Preises reduzieren', + 'Reference' => 'Referenz', + 'Refresh payment history' => 'Zahlungsverlauf aktualisieren', + 'Refund note' => 'Rückerstattungsbenachrichtigung', + 'Refund payment' => 'Zahlung rückerstatten', + 'Refund' => 'Erstattung', + 'Reject' => 'Ablehnen', + 'Rejected' => 'Abgelehnt', + 'Relationship Type' => 'Beziehungstyp', + 'Removable included tax rates are only allowed for the default tax zone.' => 'Die entfernbaren, enthaltenen Steuersätze sind nur für die Standard-Steuerzone zulässig.', + 'Remove address' => 'Adresse entfernen', + 'Remove all shipping costs from the order' => 'Alle Versandgebühren von der Bestellung entfernen', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => 'Entfernen Sie die Kundenzuordnung und die E-Mail-Adresse aus {numOrders, plural, one {}=1{der Bestellung} other{den Bestellungen}}. Wählen Sie gegebenenfalls unten weitere Kundendaten aus, die Sie entfernen möchten', + 'Remove customer data' => 'Kundendaten entfernen', + 'Remove from price?' => 'Vom Preis entfernen?', + 'Remove shipping costs for matching items only' => 'Versandkosten nur für passende Artikel entfernen', + 'Remove the included tax when a valid organization tax ID is present?' => 'Die enthaltene Steuer entfernen, wenn eine gültige Steuer-ID der Organisation vorliegt?', + 'Remove' => 'Entfernen', + 'Removed' => 'Entfernt', + 'Repeat Customers' => 'Stammkunden', + 'Reply To' => 'Antwort an', + 'Require Billing Address At Checkout' => 'Rechnungsadresse an der Kasse verlangen', + 'Require Coupon Code' => 'Gutscheincode erfordern', + 'Require Shipping Address At Checkout' => 'Versandadresse an der Kasse verlangen', + 'Require Shipping Method Selection At Checkout' => 'Auswahl der Versandart an der Kasse verlangen', + 'Require' => 'Erfordern', + 'Reserved' => 'Reserviert', + 'Reset usage' => 'Verwendung zurücksetzen', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'Den Rabatt auf die Bestellungen beschränken, bei denen der Kunde einen Mindestbestellwert mit passenden Artikel erreicht hat.', + 'Revenue Options' => 'Umsatz-Optionen', + 'Revenue' => 'Einnahmen', + 'Rule' => 'Regel', + 'Rules reordered.' => 'Regeln umsortiert.', + 'SKU' => 'Bestandseinheit (SKU)', + 'Safety' => 'Sicherheit', + 'Sale Price' => 'Aktionspreis', + 'Sale description.' => 'Beschreibung der Aktion.', + 'Sale reordered.' => 'Aktionen umsortiert.', + 'Sale saved.' => 'Aktion gespeichert.', + 'Sale' => 'Aktion', + 'Sales deleted.' => 'Verkäufe wurden gelöscht.', + 'Sales updated.' => 'Aktionen aktualisiert.', + 'Sales' => 'Verkäufe', + 'Save and continue editing' => 'Speichern und mit Bearbeitung fortfahren', + 'Save and return to all orders' => 'Speichern und zur Bestellungsübersicht zurückkehren', + 'Save and set rules' => 'Speichern und Regeln angeben', + 'Save as a new rule' => 'Als eine neue Regel speichern', + 'Save product to all sites enabled for this product type' => 'Produkt auf allen Websites speichern, die für diesen Produkttyp aktiviert sind', + 'Save product to other sites in the same site group' => 'Produkt auf anderen Websites in derselben Websitegruppe speichern', + 'Save product to other sites with the same language' => 'Produkt auf anderen Websites mit der gleichen Sprache speichern', + 'Save' => 'Speichern', + 'Search customer…' => 'Kunden suchen…', + 'Search inventory' => 'Warenbestand suchen', + 'Search or enter customer email…' => 'Kunden-E-Mail suchen oder eingeben…', + 'Search…' => 'Suchen…', + 'See Orders' => 'Bestellungen anzeigen', + 'Select a gateway' => 'Einen Gateway auswählen', + 'Select a tax category.' => 'Steuerklasse auswählen.', + 'Select a tax zone. If empty, this rate will match anywhere.' => 'Wählen Sie eine Steuerzone. Bei Leerlassen wird dieser Steuersatz überall angewendet.', + 'Select address' => 'Adresse auswählen', + 'Select an item' => 'Lagerbestandsposten auswählen', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'Wählen Sie, wie die Katalogpreisregel auf die Kaufoption(en) angewendet wird.', + 'Select how the sale will be applied to the purchasable(s).' => 'Wählen Sie, wie der Verkauf auf die Kaufoption(en) angewendet wird.', + 'Select product type' => 'Produkttyp auswählen', + 'Select the emails that will be sent when transitioning to this status.' => 'E-Mails auswählen, die versendet werden beim Wechsel in diesen Status.', + 'Select what this rate should be applied to.' => 'Wählen Sie aus, auf was dieser Steuersatz angewendet werden soll.', + 'Send Email' => 'E-Mail senden', + 'Send to custom recipient' => 'An benutzerdefinierten Empfänger senden', + 'Send to the customer' => 'An Kunden senden', + 'Set Quantity' => 'Menge setzen', + 'Set default category' => 'Standardkategorie einstellen', + 'Set default variant' => 'Als Standardvariante festlegen', + 'Set or Adjust' => 'Setzen oder Anpassen', + 'Set price' => 'Preis einstellen', + 'Set status' => 'Status festlegen', + 'Set the price to a flat amount' => 'Den Preis auf einen Pauschalbetrag setzen', + 'Set the price to a percentage of the original price' => 'Den Preis auf einen Prozentsatz des ursprünglichen Preises setzen', + 'Set the sale price to a flat amount' => 'Den Aktionspreis auf einen Pauschalbetrag stellen', + 'Set the sale price to a percentage of the original price' => 'Den Aktionspreis auf einen Prozentsatz des ursprünglichen Preises einstellen', + 'Set to' => 'Einstellen auf', + 'Settings saved.' => 'Einstellungen gespeichert.', + 'Settings' => 'Einstellungen', + 'Share cart…' => 'Warenkorb teilen…', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => 'Versand - Die Versandkosten sind die minimalen Kosten, sollte der Preis der Bestellung geringer sein als die Versandkosten.', + 'Shipping Address Zone' => 'Lieferadresszone', + 'Shipping Address' => 'Lieferadresse', + 'Shipping Business Name' => 'Geschäftsname (Versand)', + 'Shipping Categories' => 'Versandkategorien', + 'Shipping Category Conditions' => 'Versandkategorie-Bedingungen', + 'Shipping Category' => 'Versandkategorie', + 'Shipping First Name' => 'Vorname (Versand)', + 'Shipping Full Name' => 'Vollständiger Name (Versand)', + 'Shipping Last Name' => 'Nachname (Versand)', + 'Shipping Method' => 'Versandart', + 'Shipping Methods' => 'Versandarten', + 'Shipping Rule' => 'Versandregel', + 'Shipping Zones' => 'Versandzonen', + 'Shipping address required.' => 'Lieferadresse erforderlich.', + 'Shipping categories deleted.' => 'Versandkategorien gelöscht.', + 'Shipping category saved.' => 'Versandkategorie gespeichert.', + 'Shipping category updated.' => 'Versandkategorie aktualisiert.', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'Versandkosten werden in Gänze zur Rechnung hinzugefügt, bevor Prozent-, Artikel- und Gewichtssätze angewendet werden. Auf Null setzen, um diesen Satz auszuschalten. Die gesamte Regel, inklusive dieses Basissatzes wird nicht übereinstimmen und angewendet werden, wenn der Warenkorb nur nicht-lieferbare Artikel wie digitale Produkte enthält.', + 'Shipping method saved.' => 'Versandart gespeichert.', + 'Shipping methods and rules deleted.' => 'Versandmethoden und Regeln gelöscht.', + 'Shipping methods updated.' => 'Versandmethoden aktualisiert.', + 'Shipping rule saved.' => 'Versandregel gespeichert.', + 'Shipping zone saved.' => 'Versandzone gespeichert.', + 'Shipping' => 'Versand', + 'Short Number' => 'Kurzwahlnummer', + 'Show Chart?' => 'Grafik anzeigen?', + 'Show Order Count?' => 'Bestellungsanzahl anzeigen?', + 'Show all prices' => 'Alle Preise anzeigen', + 'Show archived gateways' => 'Archivierte Gateways anzeigen', + 'Show order count line on chart.' => 'Bestellungsanzahlzeile in Grafik anzeigen.', + 'Show related sales' => 'Zugehörige Aktionen anzeigen', + 'Show rule details' => 'Regelinformationen anzeigen', + 'Show the Dimensions and Weight fields for products of this type' => 'Felder "Abmessungen" und "Gewicht" für Produkte diesen Typs anzeigen', + 'Show the Title field for products' => 'Das Titelfeld für Produkte anzeigen', + 'Show the Title field for variants' => 'Titelfeld für Varianten anzeigen', + 'Signed In' => 'Angemeldet', + 'Site Languages' => 'Seitensprachen', + 'Site store mapping saved.' => 'Zuordnung des Webshops gespeichert.', + 'Sites' => 'Websites', + 'Slug' => 'Slug', + 'Snapshot' => 'Schattenkopie', + 'Snapshots' => 'Schattenkopien', + 'Some orders restored.' => 'Einige Bestellungen wurden wiederhergestellt.', + 'Some products restored.' => 'Einige Produkte wurden wiederhergestellt.', + 'Some variants restored.' => 'Einige Varianten wurden wiederhergestellt.', + 'Something changed with the order before payment, please review your order and submit payment again.' => 'Etwas hat sich bei der Bestellung vor der Bezahlung verändert. Bitte überprüfen Sie Ihre Bestellung und führen Sie die Bezahlung erneut durch.', + 'Sorry, no matching options.' => 'Keine passenden Optionen.', + 'Source - The purchasable relationship field is on the category' => 'Quelle - Das Kaufoption-Beziehungsfeld ist in der Kategorie', + 'Source' => 'Quelle', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Bitte spezifizieren Sie eine Twig Bedingung, die feststellt, ob ein Rabatt auf eine gegebene Bestellung angewendet werden soll. (Die Bestellung kann über eine `order` Variable referenziert werden.)', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Bitte spezifizieren Sie eine Twig Bedingung, die feststellt, ob eine Versandregel auf eine gegebene Bestellung angewendet werden soll. (Die Bestellung kann über eine `order` Variable referenziert werden.)', + 'Start Date' => 'Startdatum', + 'State' => 'Bundesstaat', + 'Status Email Address' => 'Adresse für Status-E-Mails', + 'Status Emails' => 'Status-Benachrichtigungen', + 'Status History' => 'Statusverlauf', + 'Status Updated.' => 'Status wurde aktualisiert.', + 'Status change message' => 'Nachricht zur Statusänderung', + 'Status' => 'Status', + 'Stock' => 'Lager', + 'Stops Processing?' => 'Bearbeitung wird angehalten?', + 'Stops subsequent?' => 'Stoppt nachfolgende?', + 'Store Location' => 'Standort des Geschäfts', + 'Store Management' => 'Shopverwaltung', + 'Store Markets' => 'Shopmärkte', + 'Store Rule' => 'Shopregel', + 'Store saved.' => 'Shop gespeichert.', + 'Store' => 'Shop', + 'Stores & Sites' => 'Shops & Websites', + 'Stores' => 'Shops', + 'Strategy to apply when an order is free or has a zero balance.' => 'Strategie zum Anwenden, wenn eine Bestellung kostenlos ist oder ein Nullsaldo hat.', + 'Strategy to apply when calculating the minimum order price.' => 'Anzuwendende Strategie beim Berechnen des Mindestbestellungspreises.', + 'Subject' => 'Betreff', + 'Subscribing user' => 'Abonnierter Benutzer', + 'Subscription Fields' => 'Abonnementfelder', + 'Subscription Plans' => 'Abonnementpläne', + 'Subscription Settings' => 'Abonnementeinstellungen', + 'Subscription cancelled.' => 'Abonnement gekündigt.', + 'Subscription date' => 'Abonnementdatum', + 'Subscription fields saved.' => 'Abonnementfelder gespeichert.', + 'Subscription for {user} to {plan} prevented by a plugin.' => 'Abonnement von {user} für {plan} wurde durch ein Plug-in verhindert.', + 'Subscription plan saved.' => 'Abonnementplan wurde gespeichert.', + 'Subscription plan' => 'Abonnementplan', + 'Subscription plans' => 'Abonnementpläne', + 'Subscription reactivated.' => 'Abonnement reaktiviert.', + 'Subscription reference' => 'Abonnementreferenz', + 'Subscription started.' => 'Abonnement gestartet.', + 'Subscription switched.' => 'Abonnement gewechselt.', + 'Subscription to “{plan}”' => 'Abonnement von "{plan}"', + 'Subscription' => 'Abonnement', + 'Subscriptions on hold' => 'Abonnements pausiert', + 'Subscriptions' => 'Abonnements', + 'Suppress emails' => 'E-Mails unterdrücken', + 'Switch plan' => 'Plan wechseln', + 'Switch' => 'Wechseln', + 'System' => 'System', + 'Table Columns' => 'Tabellenspalten', + 'Target - The category relationship field is on the purchasable' => 'Ziel - Das Kategorien-Beziehungsfeld ist bei der Kaufoption', + 'Tax & Shipping' => 'Versandkosten und Steuern', + 'Tax (inc)' => 'Steuer (inkl.)', + 'Tax Categories' => 'Steuerklasse', + 'Tax Category' => 'Steuerklasse', + 'Tax Rates' => 'Steuersatz', + 'Tax Zone' => 'Steuerzone', + 'Tax Zones' => 'Steuerzonen', + 'Tax categories deleted.' => 'Steuerkategorien gelöscht.', + 'Tax category saved.' => 'Steuerklasse gespeichert.', + 'Tax category updated.' => 'Steuerklasse aktualisiert.', + 'Tax rate saved.' => 'Steuersatz gespeichert.', + 'Tax rates updated.' => 'Steuersatz aktualisiert.', + 'Tax zone saved.' => 'Steuerzone gespeichert.', + 'Tax' => 'Steuer', + 'Taxable Subject' => 'Steuerpflichtige Person', + 'Template Path' => 'Template-Pfad', + 'That handle is already in use' => 'Dieser Identifikator wird bereits verwendet', + 'That handle is already in use.' => 'Dieser Identifikator wird bereits verwendet.', + 'The PDF to attach to this email.' => 'Die PDF, die an diese E-Mail angehängt werden soll.', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => 'Die URL zu der Seite, auf der Zahlungsinformationen für ein Abonnement aktualisiert und die 3DS-Authentifizierung durchgeführt werden können.', + 'The address provided is outside the store’s market.' => 'Die angegebene Adresse liegt außerhalb des Marktes des Shops.', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => 'Die Rabattmenge, die auf die ganze Bestellung angewendet wird. Dieser Betrag wird auf die Posten verteilt, vom höchsten Preis bis zum niedrigsten, bis der Rabatt aufgebraucht ist.', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => 'Der Basisrabatt kann Artikel im Warenkorb nur bis zu einem Preis von Null reduzieren, bis er aufgebraucht ist, und kann den Preis der Bestellung nicht negativ machen.', + 'The cart recovery link is invalid. Please request a new one.' => 'Der Warenkorb-Wiederherstellungslink ist ungültig. Bitte fordern Sie einen neuen an.', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => 'Der Wechselkurs, der benutzt wird, wenn ein Betrag in diese Währung umgerechnet wird. Wenn ein Artikel zum Beispiel {amount1} kostet, würde sich aus einem Wechselkurs von {rate} ein Betrag von {amount2} in der Zweitwährung ergeben.', + 'The countries that orders are allowed to be placed from.' => 'Die Länder, aus denen Bestellungen aufgegeben werden dürfen.', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'Der Coupon „{code}“ hat sein Nutzungslimit von {limit} überschritten.', + 'The customer for this order has been deleted.' => 'Der Kunde für diese Bestellung wurde gelöscht.', + 'The default shipping category is automatically available to all product types.' => 'Die Standardversandkategorie ist automatisch für alle Produkttypen verfügbar.', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'Der Rabatt „{name}“ hat sein Gesamtnutzungslimit von {limit} überschritten.', + 'The download link has expired. Please request a new one.' => 'Der Download-Link ist abgelaufen. Bitte fordern Sie einen neuen an.', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => 'Die E-Mail-Adresse von der E-Mails zum Bestellstatus gesendet werden. Keine Angabe, wenn die E-Mail-Adresse aus den allgemeinen Einstellungen in Craft verwendet werden soll.', + 'The entry that contains the description for this subscription’s plan.' => 'Die Eingabe, die eine Beschreibung dieses Abonnementsplans enthält.', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => 'Der Pauschalwert, der von jedem Artikel abgezogen werden soll, z. B. “3” für 3 $ Rabatt auf jeden Artikel.', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => 'Das Format, in dem neue Coupons generiert werden, z. B. {example}. Alle #-Zeichen werden durch einen zufälligen Buchstaben ersetzt.', + 'The from and to inventory locations must be different.' => 'Der Ausgangs- und Ziellagerbestand müssen unterschiedlich sein.', + 'The inventory locations this store uses.' => 'Die Lagerbestandsorte, die dieser Shop verwendet.', + 'The item is not enabled for sale.' => 'Der Artikel ist nicht für den Verkauf freigegeben.', + 'The language the order was made in.' => 'Die Sprache, in der die Bestellung aufgegeben wurde.', + 'The language to be used when this email is rendered.' => 'Die Sprache, die verwendet werden soll, wenn diese E-Mail wiedergegeben wird.', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'Die maximale Zahl an Hierachiestufen, die dieses Produkt haben kann. Wenn es egal ist, leer lassen.', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => 'Der Maximalbetrag, den der Kunde für den Versand ausgeben soll. Zum Deaktivieren auf Null setzen.', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => 'Der Minimalbetrag, den der Kunde für den Versand ausgeben soll. Zum Deaktivieren auf Null setzen.', + 'The order is not valid.' => 'Die Bestellung ist nicht gültig.', + 'The payment gateway that will be used for the subscription plan.' => 'Der Zahlungs-Gateway, der für den Abonnementplan verwendet wird.', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => 'Der Prozentwert, der von jedem Artikel nachgelassen werden soll. z.B {ex1} für {ex2} Nachlass. +Prozentwerte sind auf zwei Dezimalstellen gerundet.', + 'The previously-selected shipping method is no longer available.' => 'Die zuvor gewählte Versandoption ist nicht mehr verfügbar.', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Der Preis von {description} wurde von {originalSalePriceAsCurrency} auf {newSalePriceAsCurrency} erhöht', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Der Preis von {description} wurde von {originalSalePriceAsCurrency} auf {newSalePriceAsCurrency} gesenkt', + 'The primary currency cannot be changed after orders are placed.' => 'Die primäre Währung kann nicht geändert werden, nachdem Bestellungen aufgegeben wurden.', + 'The purchasable defines the relationship' => 'Die Kaufoption definiert die Beziehung', + 'The purchasable is related by another element' => 'Die Kaufoption ist mit einem anderen Element verknüpft', + 'The recipient of the email. Twig code can be used here.' => 'Der Empfänger der E-Mail. Twig-Code kann hier verwendet werden.', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => 'Die E-Mail-Adresse, an die Antworten gesendet werden sollen. Für die normale Antwort-E-Mail-Adresse des Senders frei lassen. Twig-Code kann hier verwendet werden.', + 'The site the order was made in.' => 'Die Website, von der aus die Bestellung aufgegeben wurde.', + 'The site to be used when this email is rendered.' => 'Die Website, die verwendet werden soll, wenn diese E-Mail wiedergegeben wird.', + 'The subject line of the email. Twig code can be used here.' => 'Die Betreffzeile der E-Mail. Twig-Code kann hier verwendet werden.', + 'The template that the PDF should be generated from.' => 'Die Vorlage, aus der die PDF generiert werden soll.', + 'The template to be used for HTML emails.' => 'Das Template, das für HTML-E-Mails genutzt werden soll.', + 'The template to be used for plain text emails. Twig code can be used here.' => 'Die Vorlage, die für Klartext-E-Mails verwendet werden soll. Twig-Code kann verwendet werden.', + 'The template to use when a product’s URL is requested.' => 'Das Template, das genutzt werden soll, wenn die URL eines Produktes angefordert wird.', + 'The total number of order adjustments changed.' => 'Die Gesamtanzahl der Angebotsanpassungen hat sich geändert.', + 'The total price of the order changed.' => 'Der Gesamtpreis der Bestellung hat sich geändert.', + 'The total quantity of items within the order changed.' => 'Die Gesamtanzahl der Artikel in der Bestellung hat sich geändert.', + 'The unique SKU of the donation purchasable.' => 'Die einzigartige SKU für das Spenden-Kaufoption.', + 'The unit of measurement that should be used when specifying product dimensions.' => 'Maßeinheit, die verwendet werden soll, um die Abmessungen eines Produktes anzugeben.', + 'The unit of measurement that should be used when specifying product weights.' => 'Die Maßeinheit, die bei der Gewichtsangabe von Produkten verwendet werden soll.', + 'The webhook URL for this gateway.' => 'Die Webhook URL für dieses Gateway.', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => 'Der Name im Feld “von” wird genutzt, wenn E-Mails zum Bestellstatus versandt werden. Wenn der Absendername aus den allgemeinen Einstellungen in Craft genutzt werden soll, Feld leer lassen.', + 'There are errors on the order' => 'Es gibt Fehler bei dieser Bestellung', + 'There are only {num} “{description}” items left in stock.' => 'Es sind nur noch {num} “{description}” Artikel auf Lager.', + 'There aren’t any product types to select yet.' => 'Es gibt noch keine Produkttypen zur Auswahl.', + 'There is no gateway or payment source available for use with this order.' => 'Es sind keine Gateways oder Zahlungsquellen zur Verwendung für diese Bestellung verfügbar.', + 'There is no gateway selected that supports payment sources.' => 'Es wurde kein Gateway ausgewählt, der Zahlungsquellen unterstützt.', + 'There is no shipping method selected for this order.' => 'Für diese Bestellung ist keine Versandart ausgewählt.', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'Diese URL wird den Warenkorb in die Sitzung des Nutzers laden, wodurch dieser zum aktiven Warenkorb wird.', + 'This action is not allowed for the current user.' => 'Diese Aktion ist für den aktuellen Benutzer nicht zulässig.', + 'This category will be used as the default for all purchasables in this store.' => 'Diese Kategorie wird als Standard für alle in diesem Shop erhältlichen Artikel verwendet.', + 'This coupon is for registered users and limited to {limit} uses.' => 'Dieser Coupon ist nur für registrierte Benutzer und auf {limit} Anwendungen limitiert.', + 'This coupon is limited to {limit} uses.' => 'Dieser Coupon ist auf {limit} Anwendungen begrenzt.', + 'This coupon requires an email address.' => 'Dieser Coupon erfordert eine E-Mail-Adresse.', + 'This gateway does not support that functionality.' => 'Dieser Gateway unterstützt diese Funktionalität nicht.', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'Dies wird durch die {setting}-Konfigurationseinstellung in `config/{file}.php` überschrieben.', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'Dies ist die Adresse Ihres Geschäfts. Sie kann von mehreren Plug-ins dazu verwendet werden, um Dinge wie Lieferung und Steuern festzulegen. Sie kann auch in PDF-Belegen verwendet werden.', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'Das ist die Standard-PDF, die erstellt wird, wenn die Bestellungs-PDF angefordert wird.', + 'This is the last location for the {store} store.' => 'Dies ist der letzte Standort für den Shop {store}.', + 'This month' => 'Dieser Monat', + 'This order has unsaved changes.' => 'Diese Bestellung hat ungespeicherte Änderungen.', + 'This week' => 'Diese Woche', + 'This year' => 'Dieses Jahr', + 'Times Used' => 'Häufigkeit des Gebrauchs', + 'Title' => 'Titel', + 'To' => 'An', + 'Today' => 'Heute', + 'Too many variants for this product.' => 'Zu viele Varianten für dieses Produkt.', + 'Top Customers by Average Order' => 'Beste Kunden nach durchschnittlicher Bestellung', + 'Top Customers by Total Revenue' => 'Top Kunden nach Gesamtumsatz', + 'Top Customers' => 'Top-Kunden', + 'Top Product Types by Qty Sold' => 'Top Produkttypen nach verkaufter Menge', + 'Top Product Types by Revenue' => 'Top Produkttypen nach Umsatz', + 'Top Product Types' => 'Top-Produkttypen', + 'Top Products by Qty Sold' => 'Top Produkte nach verkaufter Menge', + 'Top Products by Revenue' => 'Top Produkte nach Umsatz', + 'Top Products' => 'Top Produkte', + 'Top Purchasables by Qty Sold' => 'Top-Kaufoptionen nach verkaufter Menge', + 'Top Purchasables by Revenue' => 'Top Kaufoptionen nach Umsatz', + 'Top Purchasables' => 'Top-Kaufoptionen', + 'Total ' => 'Gesamt ', + 'Total Discount Use Limit' => 'Gesamter Rabatt-Nutzungslimit', + 'Total Discount' => 'Gesamtrabatt', + 'Total Included Tax' => 'Vollständige enthaltene Steuer', + 'Total Orders by Billing Country' => 'Gesamtbestellungen nach Rechnungsland', + 'Total Orders by Country' => 'Gesamtbestellungen nach Land', + 'Total Orders by Shipping Country' => 'Gesamtbestellungen nach Lieferland', + 'Total Orders' => 'Bestellungen insgesamt', + 'Total Paid' => 'Insgesamt bezahlt', + 'Total Price' => 'Gesamtpreis', + 'Total Qty' => 'Gesamtmenge', + 'Total Revenue' => 'Gesamteinnahmen', + 'Total Shipping' => 'Gesamtversandkosten', + 'Total Tax' => 'Steuern gesamt', + 'Total Weight' => 'Gesamtgewicht', + 'Total' => 'Insgesamt', + 'Track Inventory' => 'Lagerbestand verfolgen', + 'Transaction Hash' => 'Transaktions-Hashwert', + 'Transaction ID' => 'Transaktions-ID', + 'Transaction captured successfully: {message}' => 'Transaktion erfolgreich erfasst: {message}', + 'Transaction refunded successfully: {message}' => 'Transaktion erfolgreich erstattet: {message}', + 'Transactions' => 'Transaktionen', + 'Transfer Fields' => 'Übertragungsfelder', + 'Transfer Items' => 'Übertragungsbestandsposten', + 'Transfer Settings' => 'Übertragungseinstellungen', + 'Transfer Status' => 'Übertragungsstatus', + 'Transfer fields saved.' => 'Die Übertragungsfelder wurden gespeichert.', + 'Transfer must have at least one item.' => 'Die Übertragung muss mindestens einen Lagerbestandsposten enthalten.', + 'Transfer' => 'Übertragung', + 'Transfers' => 'Übertragungen', + 'Trial days credited' => 'Testtage gutgeschrieben', + 'Trial expiration' => 'Ablauf der Testphase', + 'Trial expiry date' => 'Ablaufdatum der Testphase', + 'Type not in allowed options.' => 'Typ ist nicht in erlaubten Optionen.', + 'Type' => 'Typ', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => 'Zurzeit kann das Abonnement nicht storniert werden.', + 'Unable to complete order: another request is already in progress.' => 'Die Bestellung kann nicht abgeschlossen werden: Eine andere Anfrage wird bereits bearbeitet.', + 'Unable to find variant.' => 'Variante nicht gefunden.', + 'Unable to generate coupon codes: {message}' => 'Gutscheincodes können nicht erzeugt werden: {message}', + 'Unable to make payment at this time.' => 'Die Zahlung kann zurzeit nicht durchgeführt werden.', + 'Unable to modify subscription at this time.' => 'Das Abonnement kann zurzeit nicht verändert werden.', + 'Unable to reactivate subscription at this time.' => 'Zurzeit kann das Abonnement nicht wieder aktiviert werden.', + 'Unable to reassign orders.' => 'Bestellungen können nicht neu zugewiesen werden.', + 'Unable to remove order data.' => 'Die Bestelldaten konnten nicht gelöscht werden.', + 'Unable to retrieve Sale and Purchasable.' => 'Aktion und Kaufoptionen konnten nicht abgerufen werden.', + 'Unable to retrieve cart.' => 'Warenkorb konnte nicht abgerufen werden.', + 'Unable to retrieve customer.' => 'Kunde konnte nicht abgerufen werden.', + 'Unable to retrieve load cart URL' => 'URL zum Laden vom Warenkorb konnte nicht abgerufen werden', + 'Unable to retrieve payment source.' => 'Zahlungsquelle konnte nicht abgerufen werden.', + 'Unable to set default shipping category.' => 'Standardversandkategorie konnte nicht eingestellt werden.', + 'Unable to set default tax category.' => 'Standardsteuerkategorie konnte nicht eingestellt werden.', + 'Unable to set primary payment source.' => 'Primäre Zahlungsquelle konnte nicht festgelegt werden.', + 'Unable to start the subscription. Please check your payment details.' => 'Das Abonnement kann nicht gestartet werden. Bitte überprüfen Sie Ihre Zahlungsinformationen.', + 'Unable to subscribe at this time.' => 'Zurzeit kann kein Abonnement abgeschlossen werden.', + 'Unable to update cart.' => 'Warenkorb konnte nicht aktualisiert werden.', + 'Unable to validate address.' => 'Adresse konnte nicht validiert werden.', + 'Unit Price' => 'Einheitspreis', + 'Unit price (minus discounts)' => 'Einheitspreis (abzüglich Rabatte)', + 'Units' => 'Einheiten', + 'Unpaid' => 'Nicht bezahlt', + 'Unsubscribe' => 'Abbestellen', + 'Update Address' => 'Adresse aktualisieren', + 'Update Order Status' => 'Bestellstatus aktualisieren', + 'Update Order Status…' => 'Bestellstatus aktualisieren…', + 'Update order' => 'Bestellung aktualisieren', + 'Update subscription' => 'Abonnement aktualisieren', + 'Update' => 'Aktualisieren', + 'Updated By' => 'Aktualisiert von', + 'Updated committed stock successfully.' => 'Zugewiesener Bestand erfolgreich aktualisiert.', + 'Updated' => 'Aktualisiert', + 'Use Billing Address For Tax' => 'Rechnungsadresse für Steuern verwenden', + 'Use as the primary billing address' => 'Als primäre Zahlungsadresse verwenden', + 'Use as the primary shipping address' => 'Als primäre Versandadresse verwenden', + 'Used By Tax Rates' => 'Verwendet nach Steuersatz', + 'Used by Tax Rates' => 'Verwendet nach Steuersatz', + 'User Groups' => 'Benutzergruppen', + 'User not found.' => 'Benutzer nicht gefunden.', + 'User' => 'Benutzer', + 'Uses' => 'Verwendungen', + 'Validate Business Tax ID as Vat ID' => 'Geschäftliche Steuer-ID als USt-IdNr validieren', + 'Validating condition syntax' => 'Bedingungssyntax wird validiert', + 'Validating formula syntax' => 'Formelsyntax wird validiert', + 'Variant Fields' => 'Variantenfelder', + 'Variant Has Untracked Stock' => 'Variante hat nicht verfolgten Lagerbestand', + 'Variant Price' => 'Preis der Variante', + 'Variant SKU' => 'SKU der Variante', + 'Variant Search' => 'Variantensuche', + 'Variant Stock' => 'Lagerbestand der Variante', + 'Variant Title Format' => 'Format für Variantentitel', + 'Variant Tracks Stock' => 'Variante mit Lagerbestandsverfolgung', + 'Variant UI Label Format' => 'Varianten-UI-Bezeichnung-Format', + 'Variant has no product.' => 'Variante hat kein Produkt.', + 'Variants not restored.' => 'Varianten wurden nicht wiederhergestellt.', + 'Variants restored.' => 'Varianten wurden wiederhergestellt.', + 'Variants' => 'Varianten', + 'View customer' => 'Kunde anzeigen', + 'View order' => 'Bestellung anzeigen', + 'View product type - {productType}' => 'Produkttyp anzeigen - {productType}', + 'View user' => 'Benutzer anzeigen', + 'View' => 'Ansicht', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => 'Warnung, das Löschen dieser Währung wird alle Zahlungen und Rückerstattungen in dieser Währung aufhalten. Sind Sie sicher, dass Sie „{name}“ löschen möchten?', + 'Web' => 'Web', + 'Webhook URL' => 'Webhook URL', + 'Weight ({unit})' => 'Gewicht ({unit})', + 'Weight Rate' => 'Gewichtspreis', + 'Weight Unit' => 'Gewichtseinheit', + 'Weight' => 'Gewicht', + 'What product URIs should look like for the site.' => 'Wie Produkt-URIs für diese Website aussehen sollen.', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Wie die automatisch generierten Produkttitel aussehen sollten. Sie können auch Schlagwörter nutzen, die Produkteigenschaften ausgeben, wie z. B. {ex1} oder {ex2}. Alle benutzerdefinierten Felder müssen als erforderlich markiert sein.', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Wie die automatisch generierten Variantentitel aussehen sollten. Sie können auch Tags nutzen, die Varianteneigenschaften ausgeben, wie z.B. {ex1} oder {ex2}. Alle benutzerdefinierten Felder müssen als erforderlich markiert sein.', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => 'Wie der PDF-Dateiname der Bestellung aussehen sollte (ohne Dateiendung). Sie können Tags hinzufügen die Bestelleigenschaften ausgeben, wie etwa {ex1} or {ex2}.', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'Wie die einzigartige auto-generierte Bestandseinheit (SKU) aussehen sollte, wenn ein Bestandseinheits-Feld ohne Wert abgesendet wurde. Sie können Tags einbeziehen, die Eigenschaften ausgeben, wie z.B. {ex1} oder {ex2)', + 'What this PDF will be called in the control panel.' => 'Wie diese PDF im Control Panel genannt wird.', + 'What this catalog pricing rule will be called in the control panel.' => 'Wie diese Katalogpreisregel im Control Panel genannt wird.', + 'What this discount will be called in the control panel.' => 'Wie dieser Rabatt im Control Panel genannt wird.', + 'What this email will be called in the control panel.' => 'Wie diese E-Mail im Control Panel genannt wird.', + 'What this product type will be called in the control panel.' => 'Wie dieser Produkttyp im Control Panel genannt wird.', + 'What this sale will be called in the control panel.' => 'Wie diese Aktion im Control Panel genannt wird.', + 'What this shipping category will be called in the control panel.' => 'Wie diese Versandkategorie im Control Panel genannt wird.', + 'What this shipping rule will be called in the control panel.' => 'Wie diese Versandregel im Control Panel genannt wird.', + 'What this shipping zone will be called in the control panel.' => 'Wie diese Versandzone im Control Panel genannt wird.', + 'What this status will be called in the control panel.' => 'Wie dieser Status im Control Panel genannt wird.', + 'What this subscription plan will be called in the control panel.' => 'Wie dieser Abonnementplan im Control Panel genannt wird.', + 'What this tax category will be called in the control panel.' => 'Wie diese Steuerklasse im Control Panel genannt wird.', + 'What this tax zone will be called in the control panel.' => 'Wie diese Steuerzone im Control Panel genannt wird.', + 'When this discount is applied to an order, which line items should be discounted?' => 'Wenn dieser Rabatt auf eine Bestellung angewendet wird, welche Einzelposten sollen dann rabattiert werden?', + 'Whether the first available shipping method option should be set automatically on carts.' => 'Ob die erste verfügbare Versandartoption in Warenkörben automatisch gesetzt werden soll.', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'Ob die primäre Zahlungsquelle des Benutzers bei neuen Warenkörben automatisch festgelegt werden soll.', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'Ob die primäre Versand- und Rechnungsadresse des Benutzers bei neuen Warenkörben automatisch gesetzt werden soll.', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => 'Ob diese Katalogpreisregel unabhängig von anderen Bedingungen genutzt werden kann.', + 'Whether this sale should be available for use, regardless of other conditions.' => 'Ob dieser Verkauf unabhängig von anderen Bedingungen genutzt werden kann.', + 'Which data to display in the name column in the results table.' => 'Welche Daten in der Namensspalte der Ergebnistabelle angezeigt werden.', + 'Which product types should this category be available to?' => 'Für welche Produkttypen sollte diese Kategorie verfügbar sein?', + 'Which template should be loaded when a product’s URL is requested.' => 'Die Vorlage, die bei Anforderung der URL eines Produktes geladen werden soll.', + 'Width ({unit})' => 'Breite ({unit})', + 'Width' => 'Breite', + 'YYYY' => 'JJJJ', + 'Yes' => 'Ja', + 'You are not allowed to add a line item.' => 'Sie dürfen keinen Einzelposten hinzufügen.', + 'You currently have no emails configured to select for this status.' => 'Sie haben aktuell keine E-Mails zur Auswahl für diesen Status konfiguriert.', + 'You do not have permission to load this cart.' => 'Sie haben keine Berechtigung, diesen Warenkorb zu laden.', + 'You must set up at least one gateway that supports subscriptions first.' => 'Sie müssen mindestens einen Gateway einrichten, der zuerst Abonnements unterstützt.', + 'You must be logged in or provide a valid token to load this cart.' => 'Sie müssen angemeldet sein oder ein gültiges Token bereitstellen, um diesen Warenkorb zu laden.', + 'You must be signed in to create a payment source.' => 'Sie müssen angemeldet sein, um eine Zahlungsquelle zu erstellen.', + 'You must be signed in to set a primary payment source.' => 'Sie müssen angemeldet sein, um eine primäre Zahlungsquelle festzulegen.', + 'You must make a payment to complete the order.' => 'Sie müssen eine Zahlung tätigen, um die Bestellung abzuschließen.', + 'Your Cart Recovery Link' => 'Ihr Warenkorb-Wiederherstellungslink', + 'Your Order PDF Download Link' => 'Ihr Bestellung-PDF-Download-Link', + 'Your order is empty' => 'Ihre Bestellungen ist leer', + 'ZIP file' => 'ZIP-Datei', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'Null - Minimaler Preis ist Null, sollten die Rabatte größer sein als der Wert der Bestellung.', + 'Zip Code' => 'Postleitzahl', + 'all' => 'alle', + 'any' => 'beliebig', + 'average order total' => 'durchschnittlicher Bestellungspreis', + 'billing address' => 'Rechnungsadresse', + 'donation' => 'Spende', + 'donations' => 'Spenden', + 'info' => 'Info', + 'inventory location' => 'Lagerbestandsort', + 'new customers' => 'Neukunden', + 'on hand' => 'auf Lager', + 'only' => 'nur', + 'order' => 'Bestellung', + 'orders' => 'Bestellungen', + 'price' => 'Preis', + 'prices' => 'Preise', + 'product variant' => 'Produktvariante', + 'product variants' => 'Produktvarianten', + 'product' => 'Produkt', + 'products' => 'Produkte', + 'repeat customers' => 'Stammkunden', + 'shipping address' => 'Lieferadresse', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'shippingSameAsBilling und billingSameAsShipping können nicht gleichzeitig festgelegt sein.', + 'subscription' => 'Abonnement', + 'subscriptions' => 'Abonnements', + 'to' => 'bis', + 'transfer' => 'übertragung', + 'transfers' => 'übertragungen', + '{amount} included' => '{amount} enthalten', + '{count} Unfulfilled Orders' => '{count} unerfüllte Bestellungen', + '{description} is no longer available.' => '{description} nicht länger verfügbar.', + '{description} only has {stock} in stock.' => '{description} hat nur noch {stock} auf Lager.', + '{from} to {to}' => '{from} nach {to}', + '{name} (Primary)' => '{name} (Hauptname)', + '{name} (Trashed)' => '{name} (Verworfen)', + '{name} catalog price' => '{name} Katalogpreis', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, =1{Bestellung} other{Bestellungen}} aktualisiert.', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, one {}=1{Bestellung ist} other{Bestellungen sind}} mit {numUsers, plural, one {}=1{dem Nutzer} other{den Nutzern}} verknüpft.', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, one {}=1{Abonnement ist} other{Abonnements sind}} für {numUsers, plural, one {}=1{den Nutzer} other{die Nutzer}} aktiviert.', + '{number} more…' => '{number} mehr …', + '{pct} off the discounted item price' => '{pct} Nachlass vom reduzierten Artikelpreis', + '{pct} off the original item price' => '{pct} Nachlass vom ursprünglichen Artikelpreis', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, one {}=1{wurde} other{wurden}} keiner Website zugewiesen.', + '{total} in total revenue' => '{total} in Gesamtumsatz', + '{total} orders' => '{total} Bestellungen', + '{total} saleable across {locationCount} location(s)' => '{total} verkaufbar über {locationCount} Standort(e)', + '{uses} uses across {emails} email addresses' => '{uses} Nutzen über {emails} E-Mail-Adressen', + '{uses} uses across {users} users' => '{uses} Verwendungen über {users} Kunden', + '“{description}” is currently out of stock.' => '“{description}” ist aktuell nicht vorrätig.', + '“{key}” has invalid JSON' => '„{key}“ enthält ungültiges JSON', +]; diff --git a/lang/en-GB/commerce.php b/lang/en-GB/commerce.php new file mode 100644 index 0000000000..81217f3ca6 --- /dev/null +++ b/lang/en-GB/commerce.php @@ -0,0 +1,1423 @@ + '(new price)', + '(of original price)' => '(of original price)', + '(off original price)' => '(off original price)', + 'A cart number must be specified.' => 'A cart number must be specified.', + 'A cart recovery link has been sent to {email}.' => 'A cart recovery link has been sent to {email}.', + 'A cart recovery link will be sent to {email}.' => 'A cart recovery link will be sent to {email}.', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.', + 'A new download link has been sent to {email}' => 'A new download link has been sent to {email}', + 'A new download link will be sent to {email}' => 'A new download link will be sent to {email}', + 'A valid email is required to create a customer.' => 'A valid email is required to create a customer.', + 'Accept' => 'Accept', + 'Accepted' => 'Accepted', + 'Actions' => 'Actions', + 'Active Carts' => 'Active Carts', + 'Active subscriptions' => 'Active subscriptions', + 'Active' => 'Active', + 'Add Address' => 'Add Address', + 'Add a coupon' => 'Add a coupon', + 'Add a custom line item' => 'Add a custom line item', + 'Add a line item' => 'Add a line item', + 'Add a product' => 'Add a product', + 'Add a variant' => 'Add a variant', + 'Add an adjustment' => 'Add an adjustment', + 'Add an item' => 'Add an item', + 'Add an option' => 'Add an option', + 'Add catalog price' => 'Add catalogue price', + 'Add' => 'Add', + 'Additional Actions' => 'Additional Actions', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'Additional recipients that should receive this email. Twig code can be used here.', + 'Address 1' => 'Address 1', + 'Address 2' => 'Address 2', + 'Address 3' => 'Address 3', + 'Address Line 1' => 'Address Line 1', + 'Address Line 2' => 'Address Line 2', + 'Address Updated.' => 'Address Updated.', + 'Address copied to user.' => 'Address copied to user.', + 'Address not found.' => 'Address not found.', + 'Adjust Quantity' => 'Adjust Quantity', + 'Adjust by' => 'Adjust by', + 'Adjust price when included rate is disqualified?' => 'Adjust price when included rate is disqualified?', + 'Adjustments' => 'Adjustments', + 'Admin Notices' => 'Admin Notices', + 'Administrative Area Code of Origin' => 'Administrative Area Code of Origin', + 'Advanced' => 'Advanced', + 'All Orders' => 'All Orders', + 'All Totals' => 'All Totals', + 'All Transfers' => 'All Transfers', + 'All active subscriptions' => 'All active subscriptions', + 'All customers' => 'All customers', + 'All products' => 'All products', + 'All variants must have a SKU.' => 'All variants must have a SKU.', + 'All' => 'All', + 'Allow Checkout Without Payment' => 'Allow Checkout Without Payment', + 'Allow Empty Cart On Checkout' => 'Allow Empty Cart On Checkout', + 'Allow Partial Payment On Checkout' => 'Allow Partial Payment On Checkout', + 'Allow out of stock purchases' => 'Allow out of stock purchases', + 'Allow' => 'Allow', + 'Allowed Qty' => 'Allowed Qty', + 'Alternative Phone' => 'Alternative Phone', + 'Amount' => 'Amount', + 'An ID must be provided' => 'An ID must be provided', + 'An error occurred while generating this PDF.' => 'An error occurred while generating this PDF.', + 'Any' => 'Any', + 'Anywhere' => 'Anywhere', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.', + 'Are you sure you want to capture this transaction?' => 'Are you sure you want to capture this transaction?', + 'Are you sure you want to complete this order?' => 'Are you sure you want to complete this order?', + 'Are you sure you want to delete the selected orders?' => 'Are you sure you want to delete the selected orders?', + 'Are you sure you want to delete the selected product and its variants?' => 'Are you sure you want to delete the selected product and its variants?', + 'Are you sure you want to delete this shipping rule?' => 'Are you sure you want to delete this shipping rule?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => 'Are you sure you want to delete “{name}”? This will set all line items with this status to no status.', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.', + 'Are you sure you want to overwrite the billing address?' => 'Are you sure you want to overwrite the billing address?', + 'Are you sure you want to overwrite the shipping address?' => 'Are you sure you want to overwrite the shipping address?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'Are you sure you want to permanently delete this store and everything in it?', + 'Are you sure you want to refund this transaction?' => 'Are you sure you want to refund this transaction?', + 'Are you sure you want to remove this customer?' => 'Are you sure you want to remove this customer?', + 'Are you sure you want to save this as a new shipping rule?' => 'Are you sure you want to save this as a new shipping rule?', + 'Are you sure you want to send email: {name}?' => 'Are you sure you want to send email: {name}?', + 'At least one site must be enabled for the product type.' => 'At least one site must be enabled for the product type.', + 'Attempted Payments' => 'Attempted Payments', + 'Attention' => 'Attention', + 'Authorize Only (Manually Capture)' => 'Authorise Only (Manually Capture)', + 'Auto Set Cart Shipping Method Option' => 'Auto Set Cart Shipping Method Option', + 'Auto Set New Cart Addresses' => 'Auto Set New Cart Addresses', + 'Auto Set Payment Source' => 'Auto Set Payment Source', + 'Automatic SKU Format' => 'Automatic SKU Format', + 'Available Shipping Categories' => 'Available Shipping Categories', + 'Available Tax Categories' => 'Available Tax Categories', + 'Available for purchase' => 'Available for purchase', + 'Available for purchase?' => 'Available for purchase?', + 'Available inventory for "{description}" has gone below zero.' => 'Available inventory for "{description}" has gone below zero.', + 'Available to Product Types' => 'Available to Product Types', + 'Available' => 'Available', + 'Available?' => 'Available?', + 'Average Order Total' => 'Average Order Total', + 'Average' => 'Average', + 'BCC’d Recipient' => 'BCC’d Recipient', + 'Bad Request' => 'Bad Request', + 'Bad address ID.' => 'Bad address ID.', + 'Bad order ID.' => 'Bad order ID.', + 'Base Price' => 'Base Price', + 'Base Promotional Price' => 'Base Promotional Price', + 'Base Rate' => 'Base Rate', + 'Base' => 'Base', + 'Bcc' => 'Bcc', + 'Billing Address' => 'Billing Address', + 'Billing Business Name' => 'Billing Business Name', + 'Billing First Name' => 'Billing First Name', + 'Billing Full Name' => 'Billing Full Name', + 'Billing Last Name' => 'Billing Last Name', + 'Billing address required.' => 'Billing address required.', + 'Billing detail update URL' => 'Billing detail update URL', + 'Billing issues' => 'Billing issues', + 'Billing' => 'Billing', + 'Both (Line item price + Line item shipping costs)' => 'Both (Line item price + Line item shipping costs)', + 'Business ID' => 'Business ID', + 'Business Name' => 'Business Name', + 'Business Tax ID' => 'Business Tax ID', + 'CC’d Recipient' => 'CC’d Recipient', + 'CVV' => 'CVV', + 'Can be used as an internal reference.' => 'Can be used as an internal reference.', + 'Can not complete payment for missing transaction.' => 'Cannot complete payment for missing transaction.', + 'Can not create a new order' => 'Cannot create a new order', + 'Can not find an order to pay.' => 'Cannot find an order to pay.', + 'Can not find enabled email.' => 'Cannot find enabled email.', + 'Can not find order' => 'Cannot find order', + 'Can not find order.' => 'Cannot find order.', + 'Can not find the transaction to refund' => 'Cannot find the transaction to refund', + 'Can not move between these inventory types.' => 'Cannot move between these inventory types.', + 'Can not refund amount greater than the remaining amount' => 'Cannot refund amount greater than the remaining amount', + 'Cancel subscription' => 'Cancel subscription', + 'Cancel with gateway now' => 'Cancel with gateway now', + 'Cancel' => 'Cancel', + 'Cancellation date' => 'Cancellation date', + 'Cancellation' => 'Cancellation', + 'Cannot switch plans for this subscription.' => 'Cannot switch plans for this subscription.', + 'Can’t preview this email.' => 'Can’t preview this email.', + 'Capture payment' => 'Capture payment', + 'Capture' => 'Capture', + 'Card Holder' => 'Card Holder', + 'Card Number' => 'Card Number', + 'Card' => 'Card', + 'Cart Recovery Link' => 'Cart Recovery Link', + 'Cart forgotten.' => 'Cart forgotten.', + 'Cart updated.' => 'Cart updated.', + 'Cart {number}' => 'Cart {number}', + 'Catalog Pricing Rule' => 'Catalogue Pricing Rule', + 'Catalog pricing rule description.' => 'Catalogue pricing rule description.', + 'Catalog pricing rule saved.' => 'Catalogue pricing rule saved.', + 'Catalog pricing rules deleted.' => 'Catalogue pricing rules deleted.', + 'Catalog pricing rules updated.' => 'Catalogue pricing rules updated.', + 'Categories Relationship Type' => 'Categories Relationship Type', + 'Categories' => 'Categories', + 'Category Rate Overrides' => 'Category Rate Overrides', + 'Centimeters (cm)' => 'Centimetres (cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'Changing this value may affect your ability to refund existing transactions.', + 'Choose a color to represent the order’s status' => 'Choose a colour to represent the order’s status', + 'Choose a new customer' => 'Choose a new customer', + 'Choose adjustment values to include when calculating the product revenue total.' => 'Choose adjustment values to include when calculating the product revenue total.', + 'Choose the currency’s ISO code.' => 'Choose the currency’s ISO code.', + 'Choose the destination inventory location for the existing on hand stock.' => 'Choose the destination inventory location for the existing on hand stock.', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'Choose which sites this product type should be available in, and configure the site-specific settings.', + 'City' => 'City', + 'Clear counter' => 'Clear counter', + 'Clear notices' => 'Clear notices', + 'Close' => 'Close', + 'Code' => 'Code', + 'Collated PDF' => 'Collated PDF', + 'Color' => 'Colour', + 'Commerce Products' => 'Commerce Products', + 'Commerce Settings' => 'Commerce Settings', + 'Commerce Variants' => 'Commerce Variants', + 'Commerce email “{email}” could not be sent for order “{order}”.' => 'Commerce email “{email}” could not be sent for order “{order}”.', + 'Commerce order exports' => 'Commerce order exports', + 'Commerce' => 'Commerce', + 'Committed' => 'Committed', + 'Completed Email' => 'Completed Email', + 'Completed' => 'Completed', + 'Completing order failed.' => 'Failed to complete order.', + 'Condition' => 'Condition', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availabililty early or if there are common conditions to all rules for this method.', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.', + 'Conditions' => 'Conditions', + 'Contains Purchasables' => 'Contains Purchasables', + 'Control Panel Settings' => 'Control Panel Settings', + 'Control panel' => 'Control panel', + 'Conversion Rate' => 'Conversion Rate', + 'Converted Price' => 'Converted Price', + 'Copied!' => 'Copied!', + 'Copy the URL' => 'Copy the URL', + 'Copy to {location}' => 'Copy to {location}', + 'Copy' => 'Copy', + 'Costs' => 'Costs', + 'Could not archive gateway.' => 'Could not archive gateway.', + 'Could not cancel “{reference}”.' => 'Could not cancel “{reference}”.', + 'Could not create the payment source.' => 'Could not create the payment source.', + 'Could not delete shipping rule' => 'Could not delete shipping rule', + 'Could not delete shipping zone' => 'Could not delete shipping zone', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.', + 'Could not find the email or template.' => 'Could not find the email or template.', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}', + 'Could not reactivate “{reference}”.' => 'Could not reactivate “{reference}”.', + 'Could not send email' => 'Could not send email', + 'Could not switch “{reference}” to “{plan}”.' => 'Could not switch “{reference}” to “{plan}”.', + 'Could not update orders address.' => 'Could not update orders address.', + 'Couldn’t archive Line Item Status.' => 'Couldn’t archive Line Item Status.', + 'Couldn’t archive Order Status.' => 'Couldn’t archive Order Status.', + 'Couldn’t capture transaction.' => 'Couldn’t capture transaction.', + 'Couldn’t capture transaction: {message}' => 'Couldn’t capture transaction: {message}', + 'Couldn’t delete email.' => 'Couldn’t delete email.', + 'Couldn’t delete the payment source.' => 'Couldn’t delete the payment source.', + 'Couldn’t get order.' => 'Couldn’t get order.', + 'Couldn’t recalculate order.' => 'Couldn’t recalculate order.', + 'Couldn’t refund transaction.' => 'Couldn’t refund transaction.', + 'Couldn’t refund transaction: {message}' => 'Couldn’t refund transaction: {message}', + 'Couldn’t reorder Line Item Statuses.' => 'Couldn’t reorder Line Item Statuses.', + 'Couldn’t reorder Order Statuses.' => 'Couldn’t reorder Order Statuses.', + 'Couldn’t reorder PDFs.' => 'Couldn’t reorder PDFs.', + 'Couldn’t reorder discounts.' => 'Couldn’t reorder discounts.', + 'Couldn’t reorder gateways.' => 'Couldn’t reorder gateways.', + 'Couldn’t reorder plans.' => 'Couldn’t reorder plans.', + 'Couldn’t reorder rules.' => 'Couldn’t reorder rules.', + 'Couldn’t reorder sale.' => 'Couldn’t reorder sale.', + 'Couldn’t reorder sales.' => 'Couldn’t reorder sales.', + 'Couldn’t reorder statuses.' => 'Couldn’t reorder statuses.', + 'Couldn’t reorder stores.' => 'Couldn’t reorder stores.', + 'Couldn’t save PDF.' => 'Couldn’t save PDF.', + 'Couldn’t save catalog pricing rule.' => 'Couldn’t save catalog pricing rule.', + 'Couldn’t save currency.' => 'Couldn’t save currency.', + 'Couldn’t save discount.' => 'Couldn’t save discount.', + 'Couldn’t save email.' => 'Couldn’t save email.', + 'Couldn’t save gateway.' => 'Couldn’t save gateway.', + 'Couldn’t save inventory location.' => 'Couldn’t save inventory location.', + 'Couldn’t save line item status.' => 'Couldn’t save line item status.', + 'Couldn’t save order fields.' => 'Couldn’t save order fields.', + 'Couldn’t save order status.' => 'Couldn’t save order status.', + 'Couldn’t save order.' => 'Couldn’t save order.', + 'Couldn’t save product type.' => 'Couldn’t save product type.', + 'Couldn’t save sale.' => 'Couldn’t save sale.', + 'Couldn’t save settings.' => 'Couldn’t save settings.', + 'Couldn’t save shipping category.' => 'Couldn’t save shipping category.', + 'Couldn’t save shipping method.' => 'Couldn’t save shipping method.', + 'Couldn’t save shipping rule.' => 'Couldn’t save shipping rule.', + 'Couldn’t save shipping zone.' => 'Couldn’t save shipping zone.', + 'Couldn’t save store.' => 'Could not save store.', + 'Couldn’t save subscription fields.' => 'Couldn’t save subscription fields.', + 'Couldn’t save subscription plan.' => 'Couldn’t save subscription plan.', + 'Couldn’t save subscription.' => 'Couldn’t save subscription.', + 'Couldn’t save tax category.' => 'Couldn’t save tax category.', + 'Couldn’t save tax rate.' => 'Couldn’t save tax rate.', + 'Couldn’t save tax zone.' => 'Couldn’t save tax zone.', + 'Couldn’t save transfer fields.' => 'Couldn’t save transfer fields.', + 'Couldn’t update catalog pricing rule statuses.' => 'Couldn’t update catalogue pricing rules status.', + 'Couldn’t update status.' => 'Couldn’t update status.', + 'Couldn’t updated sales status.' => 'Couldn’t update sales status.', + 'Country Code of Origin' => 'Country Code of Origin', + 'Country List' => 'Country List', + 'Country not allowed.' => 'Country not allowed.', + 'Country' => 'Country', + 'Coupon Code' => 'Coupon Code', + 'Coupon can not apply discount to this order due to address mismatch.' => 'Coupon can not apply discount to this order due to address mismatch.', + 'Coupon can not apply discount to this order due to customer mismatch.' => 'Coupon can not apply discount to this order due to customer mismatch.', + 'Coupon can not apply discount to this order.' => 'Coupon can not apply discount to this order.', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'Coupon code “{code}” is already in use by discount “{name}”.', + 'Coupon codes cannot be blank.' => 'Coupon codes cannot be blank.', + 'Coupon codes must be unique.' => 'Coupon codes must be unique.', + 'Coupon format is required and must contain at least one `#`.' => 'Coupon format is required and must contain at least one # sign.', + 'Coupon not valid.' => 'Coupon not valid.', + 'Coupon removed: {explanation}' => 'Coupon removed: {explanation}', + 'Coupons' => 'Coupons', + 'Craft Commerce - Administration' => 'Craft Commerce - Administration', + 'Craft Commerce - Inventory' => 'Craft Commerce - Inventory', + 'Craft Commerce - Orders' => 'Craft Commerce - Orders', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce - Product Type - {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce - Subscriptions', + 'Create a Discount' => 'Create a Discount', + 'Create a Subscription Plan' => 'Create a Subscription Plan', + 'Create a new PDF' => 'Create a new PDF', + 'Create a new catalog pricing rule' => 'Create a new catalogue pricing rule', + 'Create a new currency' => 'Create a new currency', + 'Create a new email' => 'Create a new email', + 'Create a new gateway' => 'Create a new gateway', + 'Create a new line item status' => 'Create a new line item status', + 'Create a new order status' => 'Create a new order status', + 'Create a new product type' => 'Create a new product type', + 'Create a new sale' => 'Create a new sale', + 'Create a new shipping category' => 'Create a new shipping category', + 'Create a new shipping method' => 'Create a new shipping method', + 'Create a new shipping rule' => 'Create a new shipping rule', + 'Create a new tax category' => 'Create a new tax category', + 'Create a new tax rate' => 'Create a new tax rate', + 'Create a product type' => 'Create a product type', + 'Create a shipping zone' => 'Create a shipping zone', + 'Create a tax zone' => 'Create a tax zone', + 'Create catalog pricing rules' => 'Create catalogue pricing rules', + 'Create customer: “{email}”' => 'Create customer: “{email}”', + 'Create discounts' => 'Create discounts', + 'Create discount…' => 'Create discount…', + 'Create rules that allow this discount to match the order.' => 'Create rules that allow this discount to match the order.', + 'Create rules that allow this discount to match the order’s billing address.' => 'Create rules that allow this discount to match the order’s billing address.', + 'Create rules that allow this discount to match the order’s customer.' => 'Create rules that allow this discount to match the order’s customer.', + 'Create rules that allow this discount to match the order’s shipping address.' => 'Create rules that allow this discount to match the order’s shipping address.', + 'Create rules that allow this gateway to match the billing address.' => 'Create rules that allow this gateway to match the billing address.', + 'Create rules that allow this gateway to match the order.' => 'Create rules that allow this gateway to match the order.', + 'Create rules that allow this gateway to match the shipping address.' => 'Create rules that allow this gateway to match the shipping address.', + 'Create sales' => 'Create sales', + 'Create sale…' => 'Create sale…', + 'Created' => 'Created', + 'Credit Card Payment Type' => 'Credit Card Payment Type', + 'Currency Code' => 'Currency Code', + 'Currency saved.' => 'Currency saved.', + 'Currency' => 'Currency', + 'Current' => 'Current', + 'Custom 1' => 'Custom 1', + 'Custom 2' => 'Custom 2', + 'Custom 3' => 'Custom 3', + 'Custom 4' => 'Custom 4', + 'Custom' => 'Custom', + 'Customer Enabled?' => 'Customer Enabled?', + 'Customer ID is required.' => 'Customer ID is required.', + 'Customer Note' => 'Customer Note', + 'Customer Notices' => 'Customer Notices', + 'Customer data' => 'Customer data', + 'Customer' => 'Customer', + 'Damaged' => 'Damaged', + 'Data shown might be outdated.' => 'Data shown might be outdated.', + 'Date Authorized' => 'Date Authorised', + 'Date Created' => 'Date Created', + 'Date First Paid' => 'Date First Paid', + 'Date Ordered' => 'Date Ordered', + 'Date Paid' => 'Date Paid', + 'Date Updated' => 'Date Updated', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'Date from which the catalogue pricing rule will be active. Leave blank for unlimited start date', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'Date from which the discount will be active. Leave blank for unlimited start date', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'Date from which the sale will be active. Leave blank for unlimited start date', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'Date when the catalogue pricing rule will be finished. Leave blank for unlimited end date', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'Date when the discount will be finished. Leave blank for unlimited end date', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'Date when the sale will be finished. Leave blank for unlimited end date', + 'Date' => 'Date', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'Default - Allow the price to be negative if discounts are greater than the order value.', + 'Default Category' => 'Default Category', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.', + 'Default Order PDF' => 'Default Order PDF', + 'Default Per Item Rate' => 'Default Per Item Rate', + 'Default Percentage Rate' => 'Default Percentage Rate', + 'Default Status?' => 'Default Status?', + 'Default View' => 'Default View', + 'Default Weight Rate' => 'Default Weight Rate', + 'Default Zone' => 'Default Zone', + 'Default status?' => 'Default status?', + 'Default to this tax zone when no billing address is set' => 'Default to this tax zone when no billing address is set', + 'Default to this tax zone when no shipping address is set' => 'Default to this tax zone when no shipping address is set', + 'Default variant updated.' => 'Default variant updated.', + 'Default' => 'Default', + 'Default?' => 'Default?', + 'Delete catalog pricing rules' => 'Delete catalogue pricing rules', + 'Delete discounts' => 'Delete discounts', + 'Delete orders' => 'Delete orders', + 'Delete sales' => 'Delete sales', + 'Delete' => 'Delete', + 'Deleting the {location} location.' => 'Deleting the {location} location.', + 'Describe this rule.' => 'Describe this rule.', + 'Describe this shipping zone.' => 'Describe this shipping zone.', + 'Describe this tax zone.' => 'Describe this tax zone.', + 'Description' => 'Description', + 'Destination Inventory Location' => 'Destination Inventory Location', + 'Destination' => 'Destination', + 'Details' => 'Details', + 'Dimension Unit' => 'Dimension Unit', + 'Dimensions' => 'Dimensions', + 'Disabled' => 'Disabled', + 'Disallow' => 'Disallow', + 'Discount all line items' => 'Discount all line items', + 'Discount description.' => 'Discount description.', + 'Discount is not allowed for the order' => 'Discount is not allowed for order', + 'Discount is out of date.' => 'Discount is out of date.', + 'Discount saved.' => 'Discount saved.', + 'Discount the matching items only' => 'Discount matching items only', + 'Discount use has reached its limit.' => 'Discount use has reached its limit.', + 'Discount' => 'Discount', + 'Discounted Item Subtotal' => 'Discounted Item Subtotal', + 'Discounted Items' => 'Discounted Items', + 'Discounts deleted.' => 'Discounts deleted.', + 'Discounts reordered.' => 'Discounts reordered.', + 'Discounts updated.' => 'Discounts updated.', + 'Discounts' => 'Discounts', + 'Disqualify with valid business tax ID?' => 'Disqualify with valid business tax ID?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'Do not apply subsequent matching sales beyond applying this sale.', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => 'Do not apply this rate if the order address has any of the selected valid business tax IDs.', + 'Do not attach a PDF to this email' => 'Do not attach a PDF to this email', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.', + 'Donation can not be zero.' => 'Donation cannot be zero.', + 'Donation needs to be an amount.' => 'Donation needs to be an amount.', + 'Donation settings saved.' => 'Donation settings saved.', + 'Donation' => 'Donation', + 'Donations' => 'Donations', + 'Done' => 'Done', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'Don’t apply any subsequent discounts to an order if this discount is applied', + 'Download PDF' => 'Download PDF', + 'Download PDF…' => 'Download PDF…', + 'Download Type' => 'Download Type', + 'Download' => 'Download', + 'Draft' => 'Draft', + 'Dummy gateway payment failed.' => 'Dummy gateway payment failed.', + 'Duplicate options exist' => 'Duplicate options exist', + 'Duration' => 'Duration', + 'EU VAT ID' => 'EU VAT ID', + 'Edit address' => 'Edit address', + 'Edit adjustments' => 'Edit adjustments', + 'Edit catalog pricing rules' => 'Edit catalogue pricing rules', + 'Edit discounts' => 'Edit discounts', + 'Edit options' => 'Edit options', + 'Edit orders' => 'Edit orders', + 'Edit sales' => 'Edit sales', + 'Edit' => 'Edit', + 'Effect' => 'Effect', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'Either (Default) - The relationship field is on the purchasable or the category', + 'Either way' => 'Either way', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.', + 'Email Subject' => 'Email Subject', + 'Email error. No email address found for order. Order: “{order}”' => 'Email error. No email address found for order. Order: “{order}”', + 'Email is not enabled.' => 'Email is not enabled.', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email required to make payments on a completed order.' => 'Email required to make payments on a completed order.', + 'Email saved.' => 'Email saved.', + 'Email sent' => 'Email sent', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email unavailable.' => 'Email unavailable.', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}', + 'Email “{email}” for order {order} was cancelled.' => 'Email “{email}” for order {order} was cancelled.', + 'Email' => 'Email', + 'Emails' => 'Emails', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.', + 'Enable structure for products of this type' => 'Enable structure for products of this type', + 'Enable this discount' => 'Enable this discount', + 'Enable this rule' => 'Enable this rule', + 'Enable this sale' => 'Enable this sale', + 'Enable this shipping method on the front end' => 'Enable this shipping method on the front end', + 'Enable this shipping rule' => 'Enable this shipping rule', + 'Enable this tax rate' => 'Enable this tax rate', + 'Enabled for customers to select during checkout?' => 'Enabled for customers to select during checkout?', + 'Enabled for customers to select?' => 'Enabled for customers to select?', + 'Enabled' => 'Enabled', + 'Enabled?' => 'Enabled?', + 'End Date' => 'End Date', + 'Enter SKU' => 'Enter SKU', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'Enter a human-friendly name for this tax rate to be used in the control panel.', + 'Enter a percentage like {ex1} or {ex2}.' => 'Enter a percentage like {ex1} or {ex2}.', + 'Enter coupon code' => 'Enter coupon code', + 'Enter reference' => 'Enter reference', + 'Error refunding transaction: {transactionHash}' => 'Error refunding transaction: {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'Every new store must be assigned to at least one site.', + 'Everywhere' => 'Everywhere', + 'Example' => 'Example', + 'Exclude this discount for products that are already on promotion' => 'Exclude this discount for products that are already on promotion', + 'Expired Link' => 'Expired Link', + 'Expired' => 'Expired', + 'Expiry Date' => 'Expiry Date', + 'Expiry date' => 'Expiry date', + 'Expiry' => 'Expiry', + 'Failed to receive transfer: {error}' => 'Failed to receive transfer: {error}', + 'Failed to send email. Please try again.' => 'Failed to send email. Please try again.', + 'Failed to start' => 'Failed to start', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => 'Failed to update {num, plural, one {}=1{order status} other{order statuses}}.', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => 'Failed updating order status on {num, plural, one {}=1{order} other{orders}}.', + 'Feet (ft)' => 'Feet (ft)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'Filtering conditions which describe which orders this rule is applicable to. Write 0 to skip a condition.', + 'First Name' => 'First Name', + 'Flat Amount Off Order' => 'Flat Amount Off Order', + 'Flat Order Discount Amount Off' => 'Flat Order Discount Amount Off', + 'Free Order Payment Strategy' => 'Free Order Payment Strategy', + 'Free Shipping' => 'Free Shipping', + 'Free orders are processed by the payment gateway' => 'Free orders are processed by the payment gateway', + 'Free orders complete immediately' => 'Free orders complete immediately', + 'Free shipping can only be for whole order or matching items, not both.' => 'Free shipping can only be for either the whole order or matching items, not both.', + 'From Name' => 'From Name', + 'Fulfill' => 'Fulfill', + 'Fulfilled' => 'Fulfilled', + 'Fulfillment' => 'Fulfillment', + 'Full Name' => 'Full Name', + 'Gateway Code' => 'Gateway Code', + 'Gateway Message' => 'Gateway Message', + 'Gateway Reference' => 'Gateway Reference', + 'Gateway Response' => 'Gateway Response', + 'Gateway doesn’t support authorize' => 'Gateway doesn’t support authorise', + 'Gateway doesn’t support partial refunds.' => 'Gateway doesn’t support partial refunds.', + 'Gateway doesn’t support purchase' => 'Gateway doesn’t support purchase', + 'Gateway doesn’t support refunds.' => 'Gateway doesn’t support refunds.', + 'Gateway saved.' => 'Gateway saved.', + 'Gateway' => 'Gateway', + 'Gateways reordered.' => 'Gateways reordered.', + 'Gateways' => 'Gateways', + 'General Settings' => 'General Settings', + 'General' => 'General', + 'Generate' => 'Generate', + 'Generated Coupon Format' => 'Generated Coupon Format', + 'Grams (g)' => 'Grams (g)', + 'Groups for which this sale will be applicable to.' => 'Groups for which this sale will be applicable.', + 'HTML Email Template Path' => 'HTML Email Template Path', + 'Handle' => 'Handle', + 'Harmonized System Code' => 'Harmonized System Code', + 'Has Admin Notices' => 'Has Admin Notices', + 'Has Emails?' => 'Has Emails?', + 'Has Free Shipping' => 'Has Free Shipping', + 'Has Orders' => 'Has Orders', + 'Has Purchasable' => 'Has Purchasable', + 'Has Variants?' => 'Has Variants?', + 'Height ({unit})' => 'Height ({unit})', + 'Height' => 'Height', + 'Hide snapshot' => 'Hide snapshot', + 'History' => 'History', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.', + 'How products should be labeled within the control panel.' => 'How products should be labelled within the control panel.', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}', + 'How this shipping method will be referred to in templates and forms.' => 'How this shipping method will be referred to in templates and forms.', + 'How variants should be labeled within the control panel.' => 'How variants should be labelled within the control panel.', + 'How you’ll refer to this PDF in the templates.' => 'How you’ll refer to this PDF in the templates.', + 'How you’ll refer to this product type in the templates.' => 'How you’ll refer to this product type in the templates.', + 'How you’ll refer to this shipping category in the templates.' => 'How you’ll refer to this shipping category in the templates.', + 'How you’ll refer to this status in the templates.' => 'How you’ll refer to this status in the templates.', + 'How you’ll refer to this subscription plan in the templates.' => 'How you’ll refer to this subscription plan in the templates.', + 'How you’ll refer to this tax category in the templates.' => 'How you’ll refer to this tax category in the templates.', + 'ID' => 'ID', + 'IP Address' => 'IP Address', + 'If disabled, this PDF will not be available or sent with emails.' => 'If disabled, this PDF will not be available or sent with emails.', + 'If disabled, this email will not send.' => 'If disabled, this email will not send.', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'If set to Authorise Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.', + 'Ignore Promotions?' => 'Ignore Promotions?', + 'Ignore previous matching sales if this sale matches.' => 'Ignore previous matching sales if this sale matches.', + 'Ignore promotional prices when this discount is applied to matching line items' => 'Ignore promotional prices when this discount is applied to matching line items', + 'Inactive Carts' => 'Inactive Carts', + 'Inches (in)' => 'Inches (in)', + 'Include built-in line item tax.' => 'Include built-in line item tax.', + 'Include in price?' => 'Include in price?', + 'Include line item discounts.' => 'Include line item discounts.', + 'Include line item shipping costs.' => 'Include line item shipping costs.', + 'Include separate line item tax.' => 'Include separate line item tax.', + 'Included in price?' => 'Included in price?', + 'Included' => 'Included', + 'Incoming transfer from Transfer ID: ' => 'Incoming transfer from Transfer ID: ', + 'Incoming' => 'Incoming', + 'Info' => 'Info', + 'Information linked?' => 'Information linked?', + 'Information' => 'Information', + 'Invalid JSON' => 'Invalid JSON', + 'Invalid Order ID' => 'Invalid Order ID', + 'Invalid VAT ID.' => 'Invalid VAT ID.', + 'Invalid condition syntax' => 'Invalid condition syntax', + 'Invalid email.' => 'Invalid email.', + 'Invalid formula syntax' => 'Invalid formula syntax', + 'Invalid gateway: {value}' => 'Invalid gateway: {value}', + 'Invalid inventory movements.' => 'Invalid inventory movements.', + 'Invalid order condition syntax.' => 'Invalid order condition syntax.', + 'Invalid payment or order. Please review.' => 'Invalid payment or order. Please review.', + 'Invalid payment source ID: {value}' => 'Invalid payment source ID: {value}', + 'Invalid store.' => 'Invalid store.', + 'Invalid user.' => 'Invalid user.', + 'Inventory Item' => 'Inventory Item', + 'Inventory Location' => 'Inventory Location', + 'Inventory Locations' => 'Inventory Locations', + 'Inventory Tracked' => 'Inventory Tracked', + 'Inventory Transfers' => 'Inventory Transfers', + 'Inventory could not be set.' => 'Inventory could not be set.', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => 'Inventory location has committed stock, the order(s) must first be fulfilled.', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => 'Inventory location has incoming stock, the transfer(s) must first be completed.', + 'Inventory location is already deactivated.' => 'Inventory location is already deactivated.', + 'Inventory location saved.' => 'Inventory location saved.', + 'Inventory locations not saved.' => 'Inventory locations not saved.', + 'Inventory movement could not be saved.' => 'Inventory movement could not be saved.', + 'Inventory movement saved.' => 'Inventory movement saved.', + 'Inventory updated.' => 'Inventory updated.', + 'Inventory was not updated.' => 'Inventory was not updated.', + 'Inventory' => 'Inventory', + 'Invoice amount' => 'Invoice amount', + 'Invoice date' => 'Invoice date', + 'Is Promotable' => 'Is Promotable', + 'Is Promotional Price?' => 'Is Promotional Price?', + 'Is Shippable' => 'Is Shippable', + 'Is Taxable' => 'Is Taxable', + 'Item Rates' => 'Item Rates', + 'Item Subtotal' => 'Item Subtotal', + 'Item Total' => 'Item Total', + 'Item' => 'Item', + 'Items' => 'Items', + 'Kilograms (kg)' => 'Kilograms (kg)', + 'Label' => 'Label', + 'Landscape' => 'Landscape', + 'Language' => 'Language', + 'Last Name' => 'Last Name', + 'Last Updated' => 'Last Updated', + 'Leave a category rate override blank to use the rate from above.' => 'Leave a category rate override blank to use the rate from above.', + 'Leave blank for unlimited uses.' => 'Leave blank for unlimited uses.', + 'Leave blank if products don’t have URLs' => 'Leave blank if products don’t have URLs', + 'Leave gateway subscription as-is' => 'Leave gateway subscription as-is', + 'Length ({unit})' => 'Length ({unit})', + 'Length' => 'Length', + 'Let each product choose which sites it should be saved to' => 'Let each product choose which sites it should be saved to', + 'Limit which orders this discount applies to based on its line items.' => 'Limit which orders this discount applies to based on its line items.', + 'Limit which purchasables this sale applies to.' => 'Limit which purchasables this sale applies to.', + 'Limit' => 'Limit', + 'Line Item Statuses' => 'Line Item Statuses', + 'Line Item' => 'Line Item', + 'Line Items' => 'Line Items', + 'Line item price (minus discounts)' => 'Line item price (minus discounts)', + 'Line item shipping cost' => 'Line item shipping cost', + 'Line item statuses reordered.' => 'Line item statuses reordered.', + 'Link Duration' => 'Link Duration', + 'Link Sent' => 'Link Sent', + 'Link to a product' => 'Link to a product', + 'Link to a variant' => 'Link to a variant', + 'Link' => 'Link', + 'Live' => 'Live', + 'Location' => 'Location', + 'Locations that should be available for previewing products in this product type.' => 'Locations that should be available for previewing products in this product type.', + 'MM' => 'MM', + 'Make a payment' => 'Make a payment', + 'Make this the primary store' => 'Make this the primary store', + 'Manage Inventory' => 'Manage Inventory', + 'Manage donation settings' => 'Manage donation settings', + 'Manage general store settings' => 'Manage general store settings', + 'Manage inventory locations' => 'Manage inventory locations', + 'Manage inventory stock levels' => 'Manage inventory stock levels', + 'Manage inventory transfers' => 'Manage inventory transfers', + 'Manage orders' => 'Manage orders', + 'Manage payment currencies' => 'Manage payment currencies', + 'Manage promotions' => 'Manage promotions', + 'Manage shipping' => 'Manage shipping', + 'Manage store settings' => 'Manage store settings', + 'Manage subscription plans' => 'Manage subscription plans', + 'Manage subscription' => 'Manage subscription', + 'Manage subscriptions' => 'Manage subscriptions', + 'Manage taxes' => 'Manage taxes', + 'Manage' => 'Manage', + 'Mark as Pending' => 'Mark as Pending', + 'Mark as completed' => 'Mark as completed', + 'Match Billing Address' => 'Match Billing Address', + 'Match Customer' => 'Match Customer', + 'Match Order' => 'Match Order', + 'Match Orders' => 'Match Orders', + 'Match Product' => 'Match Product', + 'Match Purchasable' => 'Match Purchasable', + 'Match Shipping Address' => 'Match Shipping Address', + 'Match Variant' => 'Match Variant', + 'Matching Items' => 'Matching Items', + 'Max Qty' => 'Max Qty', + 'Max Uses' => 'Max Uses', + 'Max Variants' => 'Max Variants', + 'Max quantity must greater than min.' => 'Max quantity must greater than min.', + 'Maximum Purchase Quantity' => 'Maximum Purchase Quantity', + 'Maximum Total Shipping Cost' => 'Maximum Total Shipping Cost', + 'Maximum allowed quantity' => 'Maximum allowed quantity', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.', + 'Maximum order quantity for this item is {num}.' => 'Maximum order quantity for this item is {num}.', + 'Message' => 'Message', + 'Meters (m)' => 'Metres (m)', + 'Millimeters (mm)' => 'Millimetres (mm)', + 'Min Qty' => 'Min Qty', + 'Min quantity must be less than max.' => 'Min quantity must be less than max.', + 'Minimum Purchase Quantity' => 'Minimum Purchase Quantity', + 'Minimum Total Price Strategy' => 'Minimum Total Price Strategy', + 'Minimum Total Shipping Cost' => 'Minimum Total Shipping Cost', + 'Minimum allowed quantity' => 'Minimum allowed quantity', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'Minimum number of matching items that need to be ordered for this discount to apply.', + 'Minimum order quantity for this item is {num}.' => 'Minimum order quantity for this item is {num}.', + 'Missing Gateway' => 'Missing Gateway', + 'Missing a default inventory location.' => 'Missing a default inventory location.', + 'Move Inventory' => 'Move Inventory', + 'Move To' => 'Move To', + 'Move {qty} from {fromType} to {toType}' => 'Move {qty} from {fromType} to {toType}', + 'Move' => 'Move', + 'Movement from deactivated inventory location' => 'Movement from deactivated inventory location', + 'Movement' => 'Movement', + 'Must have at least one variant.' => 'Must have at least one variant.', + 'Name Field' => 'Name Field', + 'Name' => 'Name', + 'New Customer' => 'New Customer', + 'New Customers' => 'New Customers', + 'New Order' => 'New order', + 'New PDF' => 'New PDF', + 'New address' => 'New address', + 'New catalog pricing rule' => 'New catalogue pricing rule', + 'New currency' => 'New currency', + 'New discount' => 'New discount', + 'New email' => 'New email', + 'New gateway' => 'New gateway', + 'New line item status' => 'New line item status', + 'New line items get this status by default when the order is completed' => 'New line items get this status by default when the order is completed', + 'New location' => 'New location', + 'New order status' => 'New order status', + 'New orders get this status by default' => 'New orders get this status by default', + 'New product type' => 'New product type', + 'New product' => 'New product', + 'New product, choose a type' => 'New product, choose a type', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => 'New products default to the first tax category available to them. If none are available, this category will be used.', + 'New sale' => 'New sale', + 'New shipping category' => 'New shipping category', + 'New shipping method' => 'New shipping method', + 'New shipping rule' => 'New shipping rule', + 'New shipping zone' => 'New shipping zone', + 'New subscription plan' => 'New subscription plan', + 'New tax category' => 'New tax category', + 'New tax rate' => 'New tax rate', + 'New tax zone' => 'New tax zone', + 'New transfer' => 'New transfer', + 'New {productType} product' => 'New {productType} product', + 'New' => 'New', + 'Next payment' => 'Next payment', + 'No Address' => 'No Address', + 'No PDFs exist yet.' => 'No PDFs exist yet.', + 'No access given to any specific store management features.' => 'No access given to any specific store management features.', + 'No additional payment currencies exist yet.' => 'No additional payment currencies exist yet.', + 'No address' => 'No address', + 'No billing address' => 'No billing address', + 'No catalog pricing rule exists with the ID “{id}”' => 'No catalogue pricing rule exists with the ID “{id}”', + 'No catalog pricing rules exist yet.' => 'No catalogue pricing rules exist yet.', + 'No currency exists with the ID “{id}”' => 'No currency exists with the ID “{id}”', + 'No customer email address exists on this cart.' => 'No customer email address exists on this cart.', + 'No description' => 'No description', + 'No discount exists with the ID “{id}”' => 'No discount exists with the ID “{id}”', + 'No discounts exist yet.' => 'No discounts exist yet.', + 'No donation amount supplied.' => 'No donation amount supplied.', + 'No emails exist yet.' => 'No emails exist yet.', + 'No inventory changes made.' => 'No inventory changes made.', + 'No inventory found.' => 'No inventory found.', + 'No inventory movements made.' => 'No inventory movements made.', + 'No inventory transactions for this location.' => 'No inventory transactions for this location.', + 'No new customer selected.' => 'No new customer selected.', + 'No order history exists with the ID “{id}”' => 'No order history exists with the ID “{id}”', + 'No order status history items will exist until the cart becomes an order.' => 'No order status history items will exist until the cart becomes an order.', + 'No payment source exists with the ID “{id}”' => 'No payment source exists with the ID “{id}”', + 'No private Note.' => 'No private Note.', + 'No product available.' => 'No product available.', + 'No product types exist yet.' => 'No product types exist yet.', + 'No purchasable available.' => 'No purchasable available.', + 'No sale exists with the ID “{id}”' => 'No sale exists with the ID “{id}”', + 'No sales exist yet.' => 'No sales exist yet.', + 'No shipping address' => 'No shipping address', + 'No shipping category exists with the ID “{id}”' => 'No shipping category exists with the ID “{id}”', + 'No shipping method exists with the ID “{id}”' => 'No shipping method exists with the ID “{id}”', + 'No shipping rule exists with the ID “{id}”' => 'No shipping rule exists with the ID “{id}”', + 'No shipping rules exist yet.' => 'No shipping rules exist yet.', + 'No shipping zone exists with the ID “{id}”' => 'No shipping zone exists with the ID “{id}”', + 'No stats available.' => 'No stats available.', + 'No subscription plan exists with the ID “{id}”' => 'No subscription plan exists with the ID “{id}”', + 'No subscription plans exist yet.' => 'No subscription plans exist yet.', + 'No tax category exists with the ID “{id}”' => 'No tax category exists with the ID “{id}”', + 'No tax rate exists with the ID “{id}”' => 'No tax rate exists with the ID “{id}”', + 'No tax zone exists with the ID “{id}”' => 'No tax zone exists with the ID “{id}”', + 'No transactions exist.' => 'No transactions exist.', + 'No user authenticated.' => 'No user authenticated.', + 'No' => 'No', + 'None on hand' => 'None on hand', + 'None' => 'None', + 'Not a valid address type' => 'Not a valid address type', + 'Not a valid credit card number.' => 'Not a valid credit card number.', + 'Not all SKUs are unique.' => 'Not all SKUs are unique.', + 'Note' => 'Note', + 'Notes' => 'Notes', + 'Number of Coupons' => 'Number of Coupons', + 'Number' => 'Number', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => 'Of the enabled sites above, which sites should products in this product type be saved to?', + 'On Hand' => 'On Hand', + 'Only allow this gateway to be used for zero value orders?' => 'Only allow this gateway to be used for zero value orders?', + 'Only match certain purchasables…' => 'Only match certain purchasables…', + 'Only match purchasables related to…' => 'Only match purchasables related to…', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => 'Only orders with the following order statuses will be included. Leave blank to include all statuses.', + 'Only save product to the site they were created in' => 'Only save product to the site they were created in', + 'Options' => 'Options', + 'Order Condition Formula' => 'Order Condition Formula', + 'Order Description Format' => 'Order Description Format', + 'Order Details' => 'Order Details', + 'Order Fields' => 'Order Fields', + 'Order PDF Download Link' => 'Order PDF Download Link', + 'Order PDF Filename Format' => 'Order PDF Filename Format', + 'Order Reference Number Format' => 'Order Reference Number Format', + 'Order Settings' => 'Order Settings', + 'Order Site' => 'Order Site', + 'Order Status description.' => 'Order Status description.', + 'Order Status' => 'Order Status', + 'Order Statuses' => 'Order Statuses', + 'Order can not be empty.' => 'Order cannot be empty.', + 'Order count' => 'Order count', + 'Order customer data removed.' => 'Order customer data removed.', + 'Order deleted.' => 'Order deleted.', + 'Order fields saved.' => 'Order fields saved.', + 'Order not found.' => 'Order not found.', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.', + 'Order recalculated.' => 'Order recalculated.', + 'Order status saved.' => 'Order status saved.', + 'Order statuses reordered.' => 'Order statuses reordered.', + 'Order total shipping cost' => 'Order total shipping cost', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)', + 'Order' => 'Order', + 'Orders (Legacy)' => 'Orders (Legacy)', + 'Orders deleted.' => 'Orders deleted.', + 'Orders not restored.' => 'Orders not restored.', + 'Orders restored.' => 'Orders restored.', + 'Orders' => 'Orders', + 'Organization Name' => 'Organisation Name', + 'Organization Tax ID' => 'Organisation Tax ID', + 'Origin and destination cannot be the same.' => 'Origin and destination cannot be the same.', + 'Origin' => 'Origin', + 'Original Price' => 'Original Price', + 'Original price' => 'Original price', + 'Original promotional price' => 'Original promotional price', + 'Other Languages' => 'Other Languages', + 'Other countries' => 'Other countries', + 'Outgoing transfer from Transfer ID: ' => 'Outgoing transfer from Transfer ID: ', + 'Overpaid' => 'Overpaid', + 'Overrides previous?' => 'Overrides previous?', + 'PDF Attachment' => 'PDF Attachment', + 'PDF Template Path' => 'PDF Template Path', + 'PDF saved.' => 'PDF saved.', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'PDFs & Emails', + 'PDFs' => 'PDFs', + 'Paid Amount' => 'Paid Amount', + 'Paid Status' => 'Paid Status', + 'Paid' => 'Paid', + 'Paper Orientation' => 'Paper Orientation', + 'Paper Size' => 'Paper Size', + 'Partial payment not allowed.' => 'Partial payment not allowed.', + 'Partial' => 'Partial', + 'Past year' => 'Past year', + 'Past {num} days' => 'Past {num} days', + 'Pay {amount} of {currency} on the order.' => 'Pay {amount} {currency} on the order.', + 'Pay' => 'Pay', + 'Payment Amount' => 'Payment Amount', + 'Payment Currencies' => 'Payment Currencies', + 'Payment Gateway' => 'Payment Gateway', + 'Payment Method' => 'Payment Method', + 'Payment error: {message}' => 'Payment error: {message}', + 'Payment method issue' => 'Payment method issue', + 'Payment source created.' => 'Payment source created.', + 'Payment source deleted.' => 'Payment source deleted.', + 'Payments' => 'Payments', + 'Pending' => 'Pending', + 'Per Email Address Discount Limit' => 'Per Email Address Discount Limit', + 'Per Item Amount Off' => 'Per Item Amount Off', + 'Per Item Discount' => 'Per Item Discount', + 'Per Item Percentage Off' => 'Per Item Percentage Off', + 'Per Item Rate' => 'Per Item Rate', + 'Per User Discount Limit' => 'Per User Discount Limit', + 'Percentage Rate' => 'Percentage Rate', + 'Phone (Alt)' => 'Phone (Alt)', + 'Phone' => 'Phone', + 'Pick a plan' => 'Pick a plan', + 'Plain Text Email Template Path' => 'Plain Text Email Template Path', + 'Plan' => 'Plan', + 'Plans reordered.' => 'Plans reordered.', + 'Portrait' => 'Portrait', + 'Post Date' => 'Post Date', + 'Postal Code Formula' => 'Postal Code Formula', + 'Pounds (lb)' => 'Pounds (lb)', + 'Preview' => 'Preview', + 'Previous Status' => 'Previous Status', + 'Price' => 'Price', + 'Prices' => 'Prices', + 'Pricing Rules' => 'Pricing Rules', + 'Pricing jobs are currently running.' => 'Pricing jobs are currently running.', + 'Pricing' => 'Pricing', + 'Primary Billing Address' => 'Primary Billing Address', + 'Primary Shipping Address' => 'Primary Shipping Address', + 'Primary payment source updated.' => 'Primary payment source updated.', + 'Primary' => 'Primary', + 'Private Note' => 'Private Note', + 'Product Fields' => 'Product Fields', + 'Product ID is required.' => 'Product ID is required.', + 'Product Template' => 'Product Template', + 'Product Title Format' => 'Product Title Format', + 'Product Type' => 'Product Type', + 'Product Types' => 'Product Types', + 'Product URI Format' => 'Product URI Format', + 'Product Variant' => 'Product Variant', + 'Product Variants' => 'Product Variants', + 'Product type saved.' => 'Product type saved.', + 'Product type settings' => 'Product type settings', + 'Product' => 'Product', + 'Products and Variants deleted.' => 'Products and Variants deleted.', + 'Products not restored.' => 'Products not restored.', + 'Products restored.' => 'Products restored.', + 'Products' => 'Products', + 'Promotable' => 'Promotable', + 'Promotable?' => 'Promotable?', + 'Promotional Amount' => 'Promotional Amount', + 'Promotional Price' => 'Promotional Price', + 'Purchasable Categories' => 'Purchasable Categories', + 'Purchasable ID and Sale ID are required.' => 'Purchasable ID and Sale ID are required.', + 'Purchasable ID is required.' => 'Purchasable ID is required.', + 'Purchasable Type' => 'Purchasable Type', + 'Purchasable' => 'Purchasable', + 'Purchase (Authorize and Capture Immediately)' => 'Purchase (Authorise and Capture Immediately)', + 'Purchase Total' => 'Purchase Total', + 'Qty' => 'Qty', + 'Quality Control' => 'Quality Control', + 'Quantity' => 'Quantity', + 'Rate' => 'Rate', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => 'Reassign {numOrders, plural, =1{order} other{orders}}', + 'Recalculate order' => 'Recalculate order', + 'Receive Inventory' => 'Receive Inventory', + 'Receive Transfer' => 'Receive Transfer', + 'Receive' => 'Receive', + 'Received' => 'Received', + 'Recent Orders' => 'Recent Orders', + 'Recipient' => 'Recipient', + 'Recover Cart' => 'Recover Cart', + 'Reduce price' => 'Reduce price', + 'Reduce the price by a fixed amount' => 'Reduce the price by a fixed amount', + 'Reduce the price by a percentage of the original price' => 'Reduce the price by a percentage of the original price', + 'Reference' => 'Reference', + 'Refresh payment history' => 'Refresh payment history', + 'Refund note' => 'Refund note', + 'Refund payment' => 'Refund payment', + 'Refund' => 'Refund', + 'Reject' => 'Reject', + 'Rejected' => 'Rejected', + 'Relationship Type' => 'Relationship Type', + 'Removable included tax rates are only allowed for the default tax zone.' => 'Removable included tax rates are only allowed for the default tax zone.', + 'Remove address' => 'Remove address', + 'Remove all shipping costs from the order' => 'Remove all shipping costs from the order', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below', + 'Remove customer data' => 'Remove customer data', + 'Remove from price?' => 'Remove from price?', + 'Remove shipping costs for matching items only' => 'Remove shipping costs for matching items only', + 'Remove the included tax when a valid organization tax ID is present?' => 'Remove the included tax when a valid organization tax ID is present?', + 'Remove' => 'Remove', + 'Removed' => 'Removed', + 'Repeat Customers' => 'Repeat Customers', + 'Reply To' => 'Reply To', + 'Require Billing Address At Checkout' => 'Require Billing Address At Checkout', + 'Require Coupon Code' => 'Require Coupon Code', + 'Require Shipping Address At Checkout' => 'Require Shipping Address At Checkout', + 'Require Shipping Method Selection At Checkout' => 'Require Shipping Method Selection At Checkout', + 'Require' => 'Require', + 'Reserved' => 'Reserved', + 'Reset usage' => 'Reset usage', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.', + 'Revenue Options' => 'Revenue Options', + 'Revenue' => 'Revenue', + 'Rule' => 'Rule', + 'Rules reordered.' => 'Rules reordered.', + 'SKU' => 'SKU', + 'Safety' => 'Safety', + 'Sale Price' => 'Sale Price', + 'Sale description.' => 'Sale description.', + 'Sale reordered.' => 'Sale reordered.', + 'Sale saved.' => 'Sale saved.', + 'Sale' => 'Sale', + 'Sales deleted.' => 'Sales deleted.', + 'Sales updated.' => 'Sales updated.', + 'Sales' => 'Sales', + 'Save and continue editing' => 'Save and continue editing', + 'Save and return to all orders' => 'Save and return to all orders', + 'Save and set rules' => 'Save and set rules', + 'Save as a new rule' => 'Save as a new rule', + 'Save product to all sites enabled for this product type' => 'Save product to all sites enabled for this product type', + 'Save product to other sites in the same site group' => 'Save product to other sites in the same site group', + 'Save product to other sites with the same language' => 'Save product to other sites with the same language', + 'Save' => 'Save', + 'Search customer…' => 'Search customer…', + 'Search inventory' => 'Search inventory', + 'Search or enter customer email…' => 'Search or enter customer email…', + 'Search…' => 'Search…', + 'See Orders' => 'See Orders', + 'Select a gateway' => 'Select a gateway', + 'Select a tax category.' => 'Select a tax category.', + 'Select a tax zone. If empty, this rate will match anywhere.' => 'Select a tax zone. If empty, this rate will match anywhere.', + 'Select address' => 'Select address', + 'Select an item' => 'Select an item', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'Select how the catalogue pricing rule will be applied to the purchasable(s).', + 'Select how the sale will be applied to the purchasable(s).' => 'Select how the sale will be applied to the purchasable(s).', + 'Select product type' => 'Select product type', + 'Select the emails that will be sent when transitioning to this status.' => 'Select the emails that will be sent when transitioning to this status.', + 'Select what this rate should be applied to.' => 'Select what this rate should be applied to.', + 'Send Email' => 'Send Email', + 'Send to custom recipient' => 'Send to custom recipient', + 'Send to the customer' => 'Send to the customer', + 'Set Quantity' => 'Set Quantity', + 'Set default category' => 'Set default category', + 'Set default variant' => 'Set default variant', + 'Set or Adjust' => 'Set or Adjust', + 'Set price' => 'Set price', + 'Set status' => 'Set status', + 'Set the price to a flat amount' => 'Set the price to a flat amount', + 'Set the price to a percentage of the original price' => 'Set the price to a percentage of the original price', + 'Set the sale price to a flat amount' => 'Set the sale price to a flat amount', + 'Set the sale price to a percentage of the original price' => 'Set the sale price to a percentage of the original price', + 'Set to' => 'Set to', + 'Settings saved.' => 'Settings saved.', + 'Settings' => 'Settings', + 'Share cart…' => 'Share cart…', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.', + 'Shipping Address Zone' => 'Shipping Address Zone', + 'Shipping Address' => 'Shipping Address', + 'Shipping Business Name' => 'Shipping Business Name', + 'Shipping Categories' => 'Shipping Categories', + 'Shipping Category Conditions' => 'Shipping Category Conditions', + 'Shipping Category' => 'Shipping Category', + 'Shipping First Name' => 'Shipping First Name', + 'Shipping Full Name' => 'Shipping Full Name', + 'Shipping Last Name' => 'Shipping Last Name', + 'Shipping Method' => 'Shipping Method', + 'Shipping Methods' => 'Shipping Methods', + 'Shipping Rule' => 'Shipping Rule', + 'Shipping Zones' => 'Shipping Zones', + 'Shipping address required.' => 'Shipping address required.', + 'Shipping categories deleted.' => 'Shipping categories deleted.', + 'Shipping category saved.' => 'Shipping category saved.', + 'Shipping category updated.' => 'Shipping category updated.', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.', + 'Shipping method saved.' => 'Shipping method saved.', + 'Shipping methods and rules deleted.' => 'Shipping methods and rules deleted.', + 'Shipping methods updated.' => 'Shipping methods updated.', + 'Shipping rule saved.' => 'Shipping rule saved.', + 'Shipping zone saved.' => 'Shipping zone saved.', + 'Shipping' => 'Shipping', + 'Short Number' => 'Short Number', + 'Show Chart?' => 'Show Chart?', + 'Show Order Count?' => 'Show Order Count?', + 'Show all prices' => 'Show all prices', + 'Show archived gateways' => 'Show archived gateways', + 'Show order count line on chart.' => 'Show order count line on chart.', + 'Show related sales' => 'Show related sales', + 'Show rule details' => 'Show rule details', + 'Show the Dimensions and Weight fields for products of this type' => 'Show the Dimensions and Weight fields for products of this type', + 'Show the Title field for products' => 'Show the Title field for products', + 'Show the Title field for variants' => 'Show the Title field for variants', + 'Signed In' => 'Signed In', + 'Site Languages' => 'Site Languages', + 'Site store mapping saved.' => 'Site store mapping saved.', + 'Sites' => 'Sites', + 'Slug' => 'Slug', + 'Snapshot' => 'Snapshot', + 'Snapshots' => 'Snapshots', + 'Some orders restored.' => 'Some orders restored.', + 'Some products restored.' => 'Some products restored.', + 'Some variants restored.' => 'Some variants restored.', + 'Something changed with the order before payment, please review your order and submit payment again.' => 'Something changed with the order before payment, please review your order and submit payment again.', + 'Sorry, no matching options.' => 'Sorry, no matching options.', + 'Source - The purchasable relationship field is on the category' => 'Source - The purchasable relationship field is on the category', + 'Source' => 'Source', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)', + 'Start Date' => 'Start Date', + 'State' => 'State', + 'Status Email Address' => 'Status Email Address', + 'Status Emails' => 'Status Emails', + 'Status History' => 'Status History', + 'Status Updated.' => 'Status Updated.', + 'Status change message' => 'Status change message', + 'Status' => 'Status', + 'Stock' => 'Stock', + 'Stops Processing?' => 'Stops Processing?', + 'Stops subsequent?' => 'Stops subsequent?', + 'Store Location' => 'Store Location', + 'Store Management' => 'Store Management', + 'Store Markets' => 'Store Markets', + 'Store Rule' => 'Store Rule', + 'Store saved.' => 'Store saved.', + 'Store' => 'Store', + 'Stores & Sites' => 'Stores & Sites', + 'Stores' => 'Stores', + 'Strategy to apply when an order is free or has a zero balance.' => 'Strategy to apply when an order is free or has a zero balance.', + 'Strategy to apply when calculating the minimum order price.' => 'Strategy to apply when calculating the minimum order price.', + 'Subject' => 'Subject', + 'Subscribing user' => 'Subscribing user', + 'Subscription Fields' => 'Subscription Fields', + 'Subscription Plans' => 'Subscription Plans', + 'Subscription Settings' => 'Subscription Settings', + 'Subscription cancelled.' => 'Subscription cancelled.', + 'Subscription date' => 'Subscription date', + 'Subscription fields saved.' => 'Subscription fields saved.', + 'Subscription for {user} to {plan} prevented by a plugin.' => 'Subscription for {user} to {plan} prevented by a plugin.', + 'Subscription plan saved.' => 'Subscription plan saved.', + 'Subscription plan' => 'Subscription plan', + 'Subscription plans' => 'Subscription plans', + 'Subscription reactivated.' => 'Subscription reactivated.', + 'Subscription reference' => 'Subscription reference', + 'Subscription started.' => 'Subscription started.', + 'Subscription switched.' => 'Subscription switched.', + 'Subscription to “{plan}”' => 'Subscription to “{plan}”', + 'Subscription' => 'Subscription', + 'Subscriptions on hold' => 'Subscriptions on hold', + 'Subscriptions' => 'Subscriptions', + 'Suppress emails' => 'Suppress emails', + 'Switch plan' => 'Switch plan', + 'Switch' => 'Switch', + 'System' => 'System', + 'Table Columns' => 'Table Columns', + 'Target - The category relationship field is on the purchasable' => 'Target - The category relationship field is on the purchasable', + 'Tax & Shipping' => 'Tax & Shipping', + 'Tax (inc)' => 'Tax (inc)', + 'Tax Categories' => 'Tax Categories', + 'Tax Category' => 'Tax Category', + 'Tax Rates' => 'Tax Rates', + 'Tax Zone' => 'Tax Zone', + 'Tax Zones' => 'Tax Zones', + 'Tax categories deleted.' => 'Tax categories deleted.', + 'Tax category saved.' => 'Tax category saved.', + 'Tax category updated.' => 'Tax category updated.', + 'Tax rate saved.' => 'Tax rate saved.', + 'Tax rates updated.' => 'Tax rates updated.', + 'Tax zone saved.' => 'Tax zone saved.', + 'Tax' => 'Tax', + 'Taxable Subject' => 'Taxable Subject', + 'Template Path' => 'Template Path', + 'That handle is already in use' => 'That handle is already in use', + 'That handle is already in use.' => 'That handle is already in use.', + 'The PDF to attach to this email.' => 'The PDF to attach to this email.', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => 'The URL to the page where billing details for a subscription can be updated, as well as where 3DS authentication is handled.', + 'The address provided is outside the store’s market.' => 'The address provided is outside the store’s market.', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => 'The discount amount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => 'The base discount can only discount items in the cart to down to zero until it is used up, it cannot make the order negative.', + 'The cart recovery link is invalid. Please request a new one.' => 'The cart recovery link is invalid. Please request a new one.', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.', + 'The countries that orders are allowed to be placed from.' => 'The countries that orders can be placed from.', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'The coupon "{code}" has exceeded its usage limit of {limit}.', + 'The customer for this order has been deleted.' => 'The customer for this order has been deleted.', + 'The default shipping category is automatically available to all product types.' => 'The default shipping category is automatically available to all product types.', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'The discount "{name}" has exceeded its total usage limit of {limit}.', + 'The download link has expired. Please request a new one.' => 'The download link has expired. Please request a new one.', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.', + 'The entry that contains the description for this subscription’s plan.' => 'The entry that contains the description for this subscription’s plan.', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => 'The flat value by which each item should be discounted, e.g. “3” for $3 off each item.', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => 'The format used to generate new coupons, e.g. {example}. Any # characters will be replaced with a random letter.', + 'The from and to inventory locations must be different.' => 'The from and to inventory locations must be different.', + 'The inventory locations this store uses.' => 'The inventory locations this store uses.', + 'The item is not enabled for sale.' => 'The item is not enabled for sale.', + 'The language the order was made in.' => 'The language the order was made in.', + 'The language to be used when this email is rendered.' => 'The language to be used when this email is rendered.', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'The maximum number of levels this product type can have. Leave blank if you don’t care.', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => 'The maximum the customer should spend on shipping. Set to zero to disable.', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => 'The minimum the customer should spend on shipping. Set to zero to disable.', + 'The order is not valid.' => 'The order is not valid.', + 'The payment gateway that will be used for the subscription plan.' => 'The payment gateway that will be used for the subscription plan.', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => 'The percentage value by which each item should be discounted, e.g. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.', + 'The previously-selected shipping method is no longer available.' => 'The previously-selected shipping method is no longer available.', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}', + 'The primary currency cannot be changed after orders are placed.' => 'The primary currency cannot be changed after orders are placed.', + 'The purchasable defines the relationship' => 'The purchasable defines the relationship', + 'The purchasable is related by another element' => 'The purchasable is related by another element', + 'The recipient of the email. Twig code can be used here.' => 'The recipient of the email. Twig code can be used here.', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => 'The "reply to" email address. Leave blank for normal "reply to" of email sender. Twig code can be used here.', + 'The site the order was made in.' => 'The site the order was made in.', + 'The site to be used when this email is rendered.' => 'The site to be used when this email is rendered.', + 'The subject line of the email. Twig code can be used here.' => 'The subject line of the email. Twig code can be used here.', + 'The template that the PDF should be generated from.' => 'The template that the PDF should be generated from.', + 'The template to be used for HTML emails.' => 'The template to be used for HTML emails.', + 'The template to be used for plain text emails. Twig code can be used here.' => 'The template to be used for plain text emails. Twig code can be used here.', + 'The template to use when a product’s URL is requested.' => 'The template to use when a product’s URL is requested.', + 'The total number of order adjustments changed.' => 'The total number of order adjustments changed.', + 'The total price of the order changed.' => 'The total price of the order changed.', + 'The total quantity of items within the order changed.' => 'The total quantity of items within the order changed.', + 'The unique SKU of the donation purchasable.' => 'The unique SKU of the donation purchasable.', + 'The unit of measurement that should be used when specifying product dimensions.' => 'The unit of measurement that should be used when specifying product dimensions.', + 'The unit of measurement that should be used when specifying product weights.' => 'The unit of measurement that should be used when specifying product weights.', + 'The webhook URL for this gateway.' => 'The webhook URL for this gateway.', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.', + 'There are errors on the order' => 'There are errors on the order', + 'There are only {num} “{description}” items left in stock.' => 'There are only {num} “{description}” items left in stock.', + 'There aren’t any product types to select yet.' => 'There are no product types to select yet.', + 'There is no gateway or payment source available for use with this order.' => 'There is no gateway or payment source available for use with this order.', + 'There is no gateway selected that supports payment sources.' => 'There is no gateway selected that supports payment sources.', + 'There is no shipping method selected for this order.' => 'There is no shipping method selected for this order.', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'This URL will load the cart into the user’s session, making it the active cart.', + 'This action is not allowed for the current user.' => 'This action is not allowed for the current user.', + 'This category will be used as the default for all purchasables in this store.' => 'This category will be used as the default for all purchasables in this store.', + 'This coupon is for registered users and limited to {limit} uses.' => 'This coupon is for registered users and limited to {limit} uses.', + 'This coupon is limited to {limit} uses.' => 'This coupon is limited to {limit} uses.', + 'This coupon requires an email address.' => 'This coupon requires an email address.', + 'This gateway does not support that functionality.' => 'This gateway does not support that functionality.', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'This is being overridden by the {setting} config setting in `config/{file}.php`.', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'This is the default PDF that will be rendered when requesting the order PDF.', + 'This is the last location for the {store} store.' => 'This is the last location for the {store} store.', + 'This month' => 'This month', + 'This order has unsaved changes.' => 'This order has unsaved changes.', + 'This week' => 'This week', + 'This year' => 'This year', + 'Times Used' => 'Times Used', + 'Title' => 'Title', + 'To' => 'To', + 'Today' => 'Today', + 'Too many variants for this product.' => 'Too many variants for this product.', + 'Top Customers by Average Order' => 'Top Customers by Average Order', + 'Top Customers by Total Revenue' => 'Top Customers by Total Revenue', + 'Top Customers' => 'Top Customers', + 'Top Product Types by Qty Sold' => 'Top Product Types by Qty Sold', + 'Top Product Types by Revenue' => 'Top Product Types by Revenue', + 'Top Product Types' => 'Top Product Types', + 'Top Products by Qty Sold' => 'Top Products by Qty Sold', + 'Top Products by Revenue' => 'Top Products by Revenue', + 'Top Products' => 'Top Products', + 'Top Purchasables by Qty Sold' => 'Top Purchasables by Qty Sold', + 'Top Purchasables by Revenue' => 'Top Purchasables by Revenue', + 'Top Purchasables' => 'Top Purchasables', + 'Total ' => 'Total ', + 'Total Discount Use Limit' => 'Total Discount Use Limit', + 'Total Discount' => 'Total Discount', + 'Total Included Tax' => 'Total Included Tax', + 'Total Orders by Billing Country' => 'Total Orders by Billing Country', + 'Total Orders by Country' => 'Total Orders by Country', + 'Total Orders by Shipping Country' => 'Total Orders by Shipping Country', + 'Total Orders' => 'Total Orders', + 'Total Paid' => 'Total Paid', + 'Total Price' => 'Total Price', + 'Total Qty' => 'Total Qty', + 'Total Revenue' => 'Total Revenue', + 'Total Shipping' => 'Total Shipping', + 'Total Tax' => 'Total Tax', + 'Total Weight' => 'Total Weight', + 'Total' => 'Total', + 'Track Inventory' => 'Track Inventory', + 'Transaction Hash' => 'Transaction Hash', + 'Transaction ID' => 'Transaction ID', + 'Transaction captured successfully: {message}' => 'Transaction captured successfully: {message}', + 'Transaction refunded successfully: {message}' => 'Transaction refunded successfully: {message}', + 'Transactions' => 'Transactions', + 'Transfer Fields' => 'Transfer Fields', + 'Transfer Items' => 'Transfer Items', + 'Transfer Settings' => 'Transfer Settings', + 'Transfer Status' => 'Transfer Status', + 'Transfer fields saved.' => 'Transfer fields saved.', + 'Transfer must have at least one item.' => 'Transfer must have at least one item.', + 'Transfer' => 'Transfer', + 'Transfers' => 'Transfers', + 'Trial days credited' => 'Trial days credited', + 'Trial expiration' => 'Trial expiration', + 'Trial expiry date' => 'Trial expiry date', + 'Type not in allowed options.' => 'Type not in allowed options.', + 'Type' => 'Type', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => 'Unable to cancel subscription at this time.', + 'Unable to complete order: another request is already in progress.' => 'Unable to complete order: another request is already in progress.', + 'Unable to find variant.' => 'Unable to find variant.', + 'Unable to generate coupon codes: {message}' => 'Unable to generate coupon codes: {message}', + 'Unable to make payment at this time.' => 'Unable to make payment at this time.', + 'Unable to modify subscription at this time.' => 'Unable to modify subscription at this time.', + 'Unable to reactivate subscription at this time.' => 'Unable to reactivate subscription at this time.', + 'Unable to reassign orders.' => 'Unable to reassign orders.', + 'Unable to remove order data.' => 'Unable to remove order data.', + 'Unable to retrieve Sale and Purchasable.' => 'Unable to retrieve Sale and Purchasable.', + 'Unable to retrieve cart.' => 'Unable to retrieve cart.', + 'Unable to retrieve customer.' => 'Unable to retrieve customer.', + 'Unable to retrieve load cart URL' => 'Unable to retrieve load cart URL', + 'Unable to retrieve payment source.' => 'Unable to retrieve payment source.', + 'Unable to set default shipping category.' => 'Unable to set default shipping category.', + 'Unable to set default tax category.' => 'Unable to set default tax category.', + 'Unable to set primary payment source.' => 'Unable to set primary payment source.', + 'Unable to start the subscription. Please check your payment details.' => 'Unable to start the subscription. Please check your payment details.', + 'Unable to subscribe at this time.' => 'Unable to subscribe at this time.', + 'Unable to update cart.' => 'Unable to update cart.', + 'Unable to validate address.' => 'Unable to validate address.', + 'Unit Price' => 'Unit Price', + 'Unit price (minus discounts)' => 'Unit price (minus discounts)', + 'Units' => 'Units', + 'Unpaid' => 'Unpaid', + 'Unsubscribe' => 'Unsubscribe', + 'Update Address' => 'Update Address', + 'Update Order Status' => 'Update Order Status', + 'Update Order Status…' => 'Update Order Status…', + 'Update order' => 'Update order', + 'Update subscription' => 'Update subscription', + 'Update' => 'Update', + 'Updated By' => 'Updated By', + 'Updated committed stock successfully.' => 'Updated committed stock successfully.', + 'Updated' => 'Updated', + 'Use Billing Address For Tax' => 'Use Billing Address For Tax', + 'Use as the primary billing address' => 'Use as the primary billing address', + 'Use as the primary shipping address' => 'Use as the primary shipping address', + 'Used By Tax Rates' => 'Used By Tax Rates', + 'Used by Tax Rates' => 'Used by Tax Rates', + 'User Groups' => 'User Groups', + 'User not found.' => 'User not found.', + 'User' => 'User', + 'Uses' => 'Uses', + 'Validate Business Tax ID as Vat ID' => 'Validate Business Tax ID as Vat ID', + 'Validating condition syntax' => 'Validating condition syntax', + 'Validating formula syntax' => 'Validating formula syntax', + 'Variant Fields' => 'Variant Fields', + 'Variant Has Untracked Stock' => 'Variant Has Untracked Stock', + 'Variant Price' => 'Variant Price', + 'Variant SKU' => 'Variant SKU', + 'Variant Search' => 'Variant Search', + 'Variant Stock' => 'Variant Stock', + 'Variant Title Format' => 'Variant Title Format', + 'Variant Tracks Stock' => 'Variant Tracks Stock', + 'Variant UI Label Format' => 'Variant UI Label Format', + 'Variant has no product.' => 'Variant has no product.', + 'Variants not restored.' => 'Variants not restored.', + 'Variants restored.' => 'Variants restored.', + 'Variants' => 'Variants', + 'View customer' => 'View customer', + 'View order' => 'View order', + 'View product type - {productType}' => 'View product type - {productType}', + 'View user' => 'View user', + 'View' => 'View', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => 'Warning: deleting this currency will stop all payments and refunds in this currency. Are you sure you want to delete “{name}”?', + 'Web' => 'Web', + 'Webhook URL' => 'Webhook URL', + 'Weight ({unit})' => 'Weight ({unit})', + 'Weight Rate' => 'Weight Rate', + 'Weight Unit' => 'Weight Unit', + 'Weight' => 'Weight', + 'What product URIs should look like for the site.' => 'What product URIs should look like for the site.', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}', + 'What this PDF will be called in the control panel.' => 'What this PDF will be called in the control panel.', + 'What this catalog pricing rule will be called in the control panel.' => 'What this catalogue pricing rule will be called in the control panel.', + 'What this discount will be called in the control panel.' => 'What this discount will be called in the control panel.', + 'What this email will be called in the control panel.' => 'What this email will be called in the control panel.', + 'What this product type will be called in the control panel.' => 'What this product type will be called in the control panel.', + 'What this sale will be called in the control panel.' => 'What this sale will be called in the control panel.', + 'What this shipping category will be called in the control panel.' => 'What this shipping category will be called in the control panel.', + 'What this shipping rule will be called in the control panel.' => 'What this shipping rule will be called in the control panel.', + 'What this shipping zone will be called in the control panel.' => 'What this shipping zone will be called in the control panel.', + 'What this status will be called in the control panel.' => 'What this status will be called in the control panel.', + 'What this subscription plan will be called in the control panel.' => 'What this subscription plan will be called in the control panel.', + 'What this tax category will be called in the control panel.' => 'What this tax category will be called in the control panel.', + 'What this tax zone will be called in the control panel.' => 'What this tax zone will be called in the control panel.', + 'When this discount is applied to an order, which line items should be discounted?' => 'When this discount is applied to an order, which line items should be discounted?', + 'Whether the first available shipping method option should be set automatically on carts.' => 'Whether the first available shipping method option should be set automatically on carts.', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'Whether the user’s primary payment source should be set automatically on new carts.', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => 'Whether this catalogue pricing rule should be available for use, regardless of other conditions.', + 'Whether this sale should be available for use, regardless of other conditions.' => 'Whether this sale should be available for use, regardless of other conditions.', + 'Which data to display in the name column in the results table.' => 'Which data to display in the name column in the results table.', + 'Which product types should this category be available to?' => 'Which product types should this category be available to?', + 'Which template should be loaded when a product’s URL is requested.' => 'Which template should be loaded when a product’s URL is requested.', + 'Width ({unit})' => 'Width ({unit})', + 'Width' => 'Width', + 'YYYY' => 'YYYY', + 'Yes' => 'Yes', + 'You are not allowed to add a line item.' => 'You are not allowed to add a line item.', + 'You currently have no emails configured to select for this status.' => 'You currently have no emails configured to select for this status.', + 'You do not have permission to load this cart.' => 'You do not have permission to load this cart.', + 'You must set up at least one gateway that supports subscriptions first.' => 'You must set up at least one gateway that supports subscriptions first.', + 'You must be logged in or provide a valid token to load this cart.' => 'You must be logged in or provide a valid token to load this cart.', + 'You must be signed in to create a payment source.' => 'You must be signed in to create a payment source.', + 'You must be signed in to set a primary payment source.' => 'You must be signed in to set a primary payment source.', + 'You must make a payment to complete the order.' => 'You must make a payment to complete the order.', + 'Your Cart Recovery Link' => 'Your Cart Recovery Link', + 'Your Order PDF Download Link' => 'Your Order PDF Download Link', + 'Your order is empty' => 'Your order is empty', + 'ZIP file' => 'ZIP file', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'Zero - Minimum price is zero if discounts are greater than the order value.', + 'Zip Code' => 'Zip Code', + 'all' => 'all', + 'any' => 'any', + 'average order total' => 'average order total', + 'billing address' => 'billing address', + 'donation' => 'donation', + 'donations' => 'donations', + 'info' => 'info', + 'inventory location' => 'inventory location', + 'new customers' => 'new customers', + 'on hand' => 'on hand', + 'only' => 'only', + 'order' => 'order', + 'orders' => 'orders', + 'price' => 'price', + 'prices' => 'prices', + 'product variant' => 'product variant', + 'product variants' => 'product variants', + 'product' => 'product', + 'products' => 'products', + 'repeat customers' => 'repeat customers', + 'shipping address' => 'shipping address', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'shippingSameAsBilling and billingSameAsShipping can’t both be set.', + 'subscription' => 'subscription', + 'subscriptions' => 'subscriptions', + 'to' => 'to', + 'transfer' => 'transfer', + 'transfers' => 'transfers', + '{amount} included' => '{amount} included', + '{count} Unfulfilled Orders' => '{count} Unfulfilled Orders', + '{description} is no longer available.' => '{description} is no longer available.', + '{description} only has {stock} in stock.' => '{description} only has {stock} in stock.', + '{from} to {to}' => '{from} to {to}', + '{name} (Primary)' => '{name} (Primary)', + '{name} (Trashed)' => '{name} (Trashed)', + '{name} catalog price' => '{name} catalog price', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, one {}=1{order} other{orders}} updated.', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.', + '{number} more…' => '{number} more…', + '{pct} off the discounted item price' => '{pct} off the discounted item price', + '{pct} off the original item price' => '{pct} off the original item price', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.', + '{total} in total revenue' => '{total} in total revenue', + '{total} orders' => '{total} orders', + '{total} saleable across {locationCount} location(s)' => '{total} saleable across {locationCount} location(s)', + '{uses} uses across {emails} email addresses' => '{uses} uses across {emails} email addresses', + '{uses} uses across {users} users' => '{uses} uses across {users} users', + '“{description}” is currently out of stock.' => '“{description}” is currently out of stock.', + '“{key}” has invalid JSON' => '“{key}” has invalid JSON', +]; diff --git a/lang/en/commerce.php b/lang/en/commerce.php new file mode 100644 index 0000000000..9efa2a8587 --- /dev/null +++ b/lang/en/commerce.php @@ -0,0 +1,1504 @@ + '(new price)', + '(of original price)' => '(of original price)', + '(off original price)' => '(off original price)', + 'A cart number must be specified.' => 'A cart number must be specified.', + 'A cart recovery link has been sent to {email}.' => 'A cart recovery link has been sent to {email}.', + 'A cart recovery link will be sent to {email}.' => 'A cart recovery link will be sent to {email}.', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.', + 'A new download link has been sent to {email}' => 'A new download link has been sent to {email}', + 'A new download link will be sent to {email}' => 'A new download link will be sent to {email}', + 'A valid email is required to create a customer.' => 'A valid email is required to create a customer.', + 'Accept' => 'Accept', + 'Accepted' => 'Accepted', + 'Actions' => 'Actions', + 'Active Carts' => 'Active Carts', + 'Active subscriptions' => 'Active subscriptions', + 'Active' => 'Active', + 'Add Address' => 'Add Address', + 'Add a coupon' => 'Add a coupon', + 'Add a custom line item' => 'Add a custom line item', + 'Add a line item' => 'Add a line item', + 'Add a product' => 'Add a product', + 'Add a variant' => 'Add a variant', + 'Add an adjustment' => 'Add an adjustment', + 'Add an item' => 'Add an item', + 'Add an option' => 'Add an option', + 'Add catalog price' => 'Add catalog price', + 'Add' => 'Add', + 'Additional Actions' => 'Additional Actions', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'Additional recipients that should receive this email. Twig code can be used here.', + 'Address 1' => 'Address 1', + 'Address 2' => 'Address 2', + 'Address 3' => 'Address 3', + 'Address Condition' => 'Address Condition', + 'Address Line 1' => 'Address Line 1', + 'Address Line 2' => 'Address Line 2', + 'Address Updated.' => 'Address Updated.', + 'Address copied to user.' => 'Address copied to user.', + 'Address not found.' => 'Address not found.', + 'Adjust Quantity' => 'Adjust Quantity', + 'Adjust by' => 'Adjust by', + 'Adjust price when included rate is disqualified?' => 'Adjust price when included rate is disqualified?', + 'Adjust {type} Quantity' => 'Adjust {type} Quantity', + 'Adjustments' => 'Adjustments', + 'Admin Notices' => 'Admin Notices', + 'Administrative Area Code of Origin' => 'Administrative Area Code of Origin', + 'Advanced' => 'Advanced', + 'All Orders' => 'All Orders', + 'All Totals' => 'All Totals', + 'All Transfers' => 'All Transfers', + 'All active subscriptions' => 'All active subscriptions', + 'All customers' => 'All customers', + 'All products' => 'All products', + 'All variants must have a SKU.' => 'All variants must have a SKU.', + 'All' => 'All', + 'Allow Checkout Without Payment' => 'Allow Checkout Without Payment', + 'Allow Empty Cart On Checkout' => 'Allow Empty Cart On Checkout', + 'Allow Partial Payment On Checkout' => 'Allow Partial Payment On Checkout', + 'Allow out of stock purchases' => 'Allow out of stock purchases', + 'Allow' => 'Allow', + 'Allowed Qty' => 'Allowed Qty', + 'Alternative Phone' => 'Alternative Phone', + 'Amount' => 'Amount', + 'An ID must be provided' => 'An ID must be provided', + 'An error occurred while generating this PDF.' => 'An error occurred while generating this PDF.', + 'Any' => 'Any', + 'Anywhere' => 'Anywhere', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.', + 'Are you sure you want to capture this transaction?' => 'Are you sure you want to capture this transaction?', + 'Are you sure you want to clear this discount usage counter?' => 'Are you sure you want to clear this discount usage counter?', + 'Are you sure you want to complete this order?' => 'Are you sure you want to complete this order?', + 'Are you sure you want to delete the selected orders?' => 'Are you sure you want to delete the selected orders?', + 'Are you sure you want to delete the selected product and its variants?' => 'Are you sure you want to delete the selected product and its variants?', + 'Are you sure you want to delete this line item status? This will set all line items with this status to no status.' => 'Are you sure you want to delete this line item status? This will set all line items with this status to no status.', + 'Are you sure you want to delete this shipping rule?' => 'Are you sure you want to delete this shipping rule?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.', + 'Are you sure you want to overwrite the billing address?' => 'Are you sure you want to overwrite the billing address?', + 'Are you sure you want to overwrite the shipping address?' => 'Are you sure you want to overwrite the shipping address?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'Are you sure you want to permanently delete this store and everything in it?', + 'Are you sure you want to refund this transaction?' => 'Are you sure you want to refund this transaction?', + 'Are you sure you want to remove this customer?' => 'Are you sure you want to remove this customer?', + 'Are you sure you want to save this as a new shipping rule?' => 'Are you sure you want to save this as a new shipping rule?', + 'Are you sure you want to send email: {name}?' => 'Are you sure you want to send email: {name}?', + 'At least one site must be enabled for the product type.' => 'At least one site must be enabled for the product type.', + 'Attempted Payments' => 'Attempted Payments', + 'Attention' => 'Attention', + 'Authorize Only (Manually Capture)' => 'Authorize Only (Manually Capture)', + 'Authorize' => 'Authorize', + 'Auto Set Cart Shipping Method Option' => 'Auto Set Cart Shipping Method Option', + 'Auto Set New Cart Addresses' => 'Auto Set New Cart Addresses', + 'Auto Set Payment Source' => 'Auto Set Payment Source', + 'Automatic SKU Format' => 'Automatic SKU Format', + 'Available Shipping Categories' => 'Available Shipping Categories', + 'Available Tax Categories' => 'Available Tax Categories', + 'Available for purchase' => 'Available for purchase', + 'Available for purchase?' => 'Available for purchase?', + 'Available inventory for "{description}" has gone below zero.' => 'Available inventory for "{description}" has gone below zero.', + 'Available to Product Types' => 'Available to Product Types', + 'Available' => 'Available', + 'Available?' => 'Available?', + 'Average Order Total' => 'Average Order Total', + 'Average' => 'Average', + 'BCC’d Recipient' => 'BCC’d Recipient', + 'Bad Request' => 'Bad Request', + 'Bad address ID.' => 'Bad address ID.', + 'Bad order ID.' => 'Bad order ID.', + 'Base Price' => 'Base Price', + 'Base Promotional Price' => 'Base Promotional Price', + 'Base Rate' => 'Base Rate', + 'Base' => 'Base', + 'Bcc' => 'Bcc', + 'Billing Address' => 'Billing Address', + 'Billing Business Name' => 'Billing Business Name', + 'Billing First Name' => 'Billing First Name', + 'Billing Full Name' => 'Billing Full Name', + 'Billing Last Name' => 'Billing Last Name', + 'Billing address required.' => 'Billing address required.', + 'Billing detail update URL' => 'Billing detail update URL', + 'Billing issues' => 'Billing issues', + 'Billing' => 'Billing', + 'Both (Line item price + Line item shipping costs)' => 'Both (Line item price + Line item shipping costs)', + 'Business ID' => 'Business ID', + 'Business Name' => 'Business Name', + 'Business Tax ID' => 'Business Tax ID', + 'CC’d Recipient' => 'CC’d Recipient', + 'CVV' => 'CVV', + 'Can be used as an internal reference.' => 'Can be used as an internal reference.', + 'Can not complete payment for missing transaction.' => 'Can not complete payment for missing transaction.', + 'Can not create a new order' => 'Can not create a new order', + 'Can not find an order to pay.' => 'Can not find an order to pay.', + 'Can not find enabled email.' => 'Can not find enabled email.', + 'Can not find order' => 'Can not find order', + 'Can not find order.' => 'Can not find order.', + 'Can not find the transaction to refund' => 'Can not find the transaction to refund', + 'Can not move between these inventory types.' => 'Can not move between these inventory types.', + 'Can not refund amount greater than the remaining amount' => 'Can not refund amount greater than the remaining amount', + 'Cancel subscription' => 'Cancel subscription', + 'Cancel with gateway now' => 'Cancel with gateway now', + 'Cancel' => 'Cancel', + 'Cancellation date' => 'Cancellation date', + 'Cancellation' => 'Cancellation', + 'Cannot switch plans for this subscription.' => 'Cannot switch plans for this subscription.', + 'Can’t preview this email.' => 'Can’t preview this email.', + 'Capture payment' => 'Capture payment', + 'Capture' => 'Capture', + 'Card Holder' => 'Card Holder', + 'Card Number' => 'Card Number', + 'Card' => 'Card', + 'Cart Recovery Link' => 'Cart Recovery Link', + 'Cart forgotten.' => 'Cart forgotten.', + 'Cart updated.' => 'Cart updated.', + 'Cart {number}' => 'Cart {number}', + 'Catalog Pricing Rule' => 'Catalog Pricing Rule', + 'Catalog pricing rule description.' => 'Catalog pricing rule description.', + 'Catalog pricing rule saved.' => 'Catalog pricing rule saved.', + 'Catalog pricing rules deleted.' => 'Catalog pricing rules deleted.', + 'Catalog pricing rules updated.' => 'Catalog pricing rules updated.', + 'Categories Relationship Type' => 'Categories Relationship Type', + 'Categories' => 'Categories', + 'Category Rate Overrides' => 'Category Rate Overrides', + 'Centimeters (cm)' => 'Centimeters (cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'Changing this value may affect your ability to refund existing transactions.', + 'Choose a color to represent the order’s status' => 'Choose a color to represent the order’s status', + 'Choose a new customer' => 'Choose a new customer', + 'Choose adjustment values to include when calculating the product revenue total.' => 'Choose adjustment values to include when calculating the product revenue total.', + 'Choose the currency’s ISO code.' => 'Choose the currency’s ISO code.', + 'Choose the destination inventory location for the existing on hand stock.' => 'Choose the destination inventory location for the existing on hand stock.', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'Choose which sites this product type should be available in, and configure the site-specific settings.', + 'City' => 'City', + 'Clear counter' => 'Clear counter', + 'Clear notices' => 'Clear notices', + 'Close' => 'Close', + 'Code' => 'Code', + 'Collated PDF' => 'Collated PDF', + 'Color' => 'Color', + 'Commerce Products' => 'Commerce Products', + 'Commerce Settings' => 'Commerce Settings', + 'Commerce Variants' => 'Commerce Variants', + 'Commerce email “{email}” could not be sent for order “{order}”.' => 'Commerce email “{email}” could not be sent for order “{order}”.', + 'Commerce order exports' => 'Commerce order exports', + 'Commerce' => 'Commerce', + 'Committed' => 'Committed', + 'Completed Email' => 'Completed Email', + 'Completed' => 'Completed', + 'Completing order failed.' => 'Completing order failed.', + 'Condition' => 'Condition', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.', + 'Conditions' => 'Conditions', + 'Contains Purchasables' => 'Contains Purchasables', + 'Control Panel Settings' => 'Control Panel Settings', + 'Control panel' => 'Control panel', + 'Conversion Rate' => 'Conversion Rate', + 'Converted Price' => 'Converted Price', + 'Copied!' => 'Copied!', + 'Copy the URL' => 'Copy the URL', + 'Copy to {location}' => 'Copy to {location}', + 'Copy' => 'Copy', + 'Costs' => 'Costs', + 'Could not archive gateway.' => 'Could not archive gateway.', + 'Could not cancel “{reference}”.' => 'Could not cancel “{reference}”.', + 'Could not create the payment source.' => 'Could not create the payment source.', + 'Could not delete shipping rule' => 'Could not delete shipping rule', + 'Could not delete shipping zone' => 'Could not delete shipping zone', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.', + 'Could not find the email or template.' => 'Could not find the email or template.', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}', + 'Could not reactivate “{reference}”.' => 'Could not reactivate “{reference}”.', + 'Could not send email' => 'Could not send email', + 'Could not switch “{reference}” to “{plan}”.' => 'Could not switch “{reference}” to “{plan}”.', + 'Could not update orders address.' => 'Could not update orders address.', + 'Couldn’t archive Line Item Status.' => 'Couldn’t archive Line Item Status.', + 'Couldn’t archive Order Status.' => 'Couldn’t archive Order Status.', + 'Couldn’t capture transaction.' => 'Couldn’t capture transaction.', + 'Couldn’t capture transaction: {message}' => 'Couldn’t capture transaction: {message}', + 'Couldn’t delete email.' => 'Couldn’t delete email.', + 'Couldn’t delete the payment source.' => 'Couldn’t delete the payment source.', + 'Couldn’t get order.' => 'Couldn’t get order.', + 'Couldn’t mark transfer as pending.' => 'Couldn’t mark transfer as pending.', + 'Couldn’t recalculate order.' => 'Couldn’t recalculate order.', + 'Couldn’t refund transaction.' => 'Couldn’t refund transaction.', + 'Couldn’t refund transaction: {message}' => 'Couldn’t refund transaction: {message}', + 'Couldn’t reorder Line Item Statuses.' => 'Couldn’t reorder Line Item Statuses.', + 'Couldn’t reorder Order Statuses.' => 'Couldn’t reorder Order Statuses.', + 'Couldn’t reorder PDFs.' => 'Couldn’t reorder PDFs.', + 'Couldn’t reorder discounts.' => 'Couldn’t reorder discounts.', + 'Couldn’t reorder gateways.' => 'Couldn’t reorder gateways.', + 'Couldn’t reorder plans.' => 'Couldn’t reorder plans.', + 'Couldn’t reorder rules.' => 'Couldn’t reorder rules.', + 'Couldn’t reorder sale.' => 'Couldn’t reorder sale.', + 'Couldn’t reorder sales.' => 'Couldn’t reorder sales.', + 'Couldn’t reorder statuses.' => 'Couldn’t reorder statuses.', + 'Couldn’t reorder stores.' => 'Couldn’t reorder stores.', + 'Couldn’t save PDF.' => 'Couldn’t save PDF.', + 'Couldn’t save catalog pricing rule.' => 'Couldn’t save catalog pricing rule.', + 'Couldn’t save currency.' => 'Couldn’t save currency.', + 'Couldn’t save discount.' => 'Couldn’t save discount.', + 'Couldn’t save donation settings.' => 'Couldn’t save donation settings.', + 'Couldn’t save email.' => 'Couldn’t save email.', + 'Couldn’t save gateway.' => 'Couldn’t save gateway.', + 'Couldn’t save inventory item.' => 'Couldn’t save inventory item.', + 'Couldn’t save inventory location.' => 'Couldn’t save inventory location.', + 'Couldn’t save line item status.' => 'Couldn’t save line item status.', + 'Couldn’t save order fields.' => 'Couldn’t save order fields.', + 'Couldn’t save order status.' => 'Couldn’t save order status.', + 'Couldn’t save order.' => 'Couldn’t save order.', + 'Couldn’t save product type.' => 'Couldn’t save product type.', + 'Couldn’t save sale.' => 'Couldn’t save sale.', + 'Couldn’t save settings.' => 'Couldn’t save settings.', + 'Couldn’t save shipping category.' => 'Couldn’t save shipping category.', + 'Couldn’t save shipping method.' => 'Couldn’t save shipping method.', + 'Couldn’t save shipping rule.' => 'Couldn’t save shipping rule.', + 'Couldn’t save shipping zone.' => 'Couldn’t save shipping zone.', + 'Couldn’t save store location address.' => 'Couldn’t save store location address.', + 'Couldn’t save store.' => 'Couldn’t save store.', + 'Couldn’t save subscription fields.' => 'Couldn’t save subscription fields.', + 'Couldn’t save subscription plan.' => 'Couldn’t save subscription plan.', + 'Couldn’t save subscription.' => 'Couldn’t save subscription.', + 'Couldn’t save tax category.' => 'Couldn’t save tax category.', + 'Couldn’t save tax rate.' => 'Couldn’t save tax rate.', + 'Couldn’t save tax zone.' => 'Couldn’t save tax zone.', + 'Couldn’t save the store.' => 'Couldn’t save the store.', + 'Couldn’t save transfer fields.' => 'Couldn’t save transfer fields.', + 'Couldn’t update catalog pricing rule statuses.' => 'Couldn’t update catalog pricing rule statuses.', + 'Couldn’t update status.' => 'Couldn’t update status.', + 'Couldn’t updated sales status.' => 'Couldn’t updated sales status.', + 'Country Code of Origin' => 'Country Code of Origin', + 'Country List' => 'Country List', + 'Country not allowed.' => 'Country not allowed.', + 'Country' => 'Country', + 'Coupon Code' => 'Coupon Code', + 'Coupon can not apply discount to this order due to address mismatch.' => 'Coupon can not apply discount to this order due to address mismatch.', + 'Coupon can not apply discount to this order due to customer mismatch.' => 'Coupon can not apply discount to this order due to customer mismatch.', + 'Coupon can not apply discount to this order.' => 'Coupon can not apply discount to this order.', + 'Coupon code management isn’t available on this screen yet — existing coupons are left as-is when you save.' => 'Coupon code management isn’t available on this screen yet — existing coupons are left as-is when you save.', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'Coupon code “{code}” is already in use by discount “{name}”.', + 'Coupon codes cannot be blank.' => 'Coupon codes cannot be blank.', + 'Coupon codes must be unique.' => 'Coupon codes must be unique.', + 'Coupon format is required and must contain at least one `#`.' => 'Coupon format is required and must contain at least one `#`.', + 'Coupon not valid.' => 'Coupon not valid.', + 'Coupon removed: {explanation}' => 'Coupon removed: {explanation}', + 'Coupons' => 'Coupons', + 'Craft Commerce - Administration' => 'Craft Commerce - Administration', + 'Craft Commerce - Inventory' => 'Craft Commerce - Inventory', + 'Craft Commerce - Orders' => 'Craft Commerce - Orders', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce - Product Type - {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce - Subscriptions', + 'Create a Discount' => 'Create a Discount', + 'Create a Subscription Plan' => 'Create a Subscription Plan', + 'Create a new PDF' => 'Create a new PDF', + 'Create a new catalog pricing rule' => 'Create a new catalog pricing rule', + 'Create a new currency' => 'Create a new currency', + 'Create a new email' => 'Create a new email', + 'Create a new gateway' => 'Create a new gateway', + 'Create a new inventory location' => 'Create a new inventory location', + 'Create a new line item status' => 'Create a new line item status', + 'Create a new order status' => 'Create a new order status', + 'Create a new product type' => 'Create a new product type', + 'Create a new sale' => 'Create a new sale', + 'Create a new shipping category' => 'Create a new shipping category', + 'Create a new shipping method' => 'Create a new shipping method', + 'Create a new shipping rule' => 'Create a new shipping rule', + 'Create a new store' => 'Create a new store', + 'Create a new tax category' => 'Create a new tax category', + 'Create a new tax rate' => 'Create a new tax rate', + 'Create a product type' => 'Create a product type', + 'Create a shipping zone' => 'Create a shipping zone', + 'Create a tax zone' => 'Create a tax zone', + 'Create catalog pricing rules' => 'Create catalog pricing rules', + 'Create customer: “{email}”' => 'Create customer: “{email}”', + 'Create discounts' => 'Create discounts', + 'Create discount…' => 'Create discount…', + 'Create rules that allow this discount to match the order.' => 'Create rules that allow this discount to match the order.', + 'Create rules that allow this discount to match the order’s billing address.' => 'Create rules that allow this discount to match the order’s billing address.', + 'Create rules that allow this discount to match the order’s customer.' => 'Create rules that allow this discount to match the order’s customer.', + 'Create rules that allow this discount to match the order’s shipping address.' => 'Create rules that allow this discount to match the order’s shipping address.', + 'Create rules that allow this gateway to match the billing address.' => 'Create rules that allow this gateway to match the billing address.', + 'Create rules that allow this gateway to match the order.' => 'Create rules that allow this gateway to match the order.', + 'Create rules that allow this gateway to match the shipping address.' => 'Create rules that allow this gateway to match the shipping address.', + 'Create sales' => 'Create sales', + 'Create sale…' => 'Create sale…', + 'Created' => 'Created', + 'Credit Card Payment Type' => 'Credit Card Payment Type', + 'Currency Code' => 'Currency Code', + 'Currency saved.' => 'Currency saved.', + 'Currency' => 'Currency', + 'Current' => 'Current', + 'Custom 1' => 'Custom 1', + 'Custom 2' => 'Custom 2', + 'Custom 3' => 'Custom 3', + 'Custom 4' => 'Custom 4', + 'Custom' => 'Custom', + 'Customer Enabled?' => 'Customer Enabled?', + 'Customer ID is required.' => 'Customer ID is required.', + 'Customer Note' => 'Customer Note', + 'Customer Notices' => 'Customer Notices', + 'Customer data' => 'Customer data', + 'Customer' => 'Customer', + 'Damaged' => 'Damaged', + 'Data shown might be outdated.' => 'Data shown might be outdated.', + 'Date Authorized' => 'Date Authorized', + 'Date Created' => 'Date Created', + 'Date First Paid' => 'Date First Paid', + 'Date Ordered' => 'Date Ordered', + 'Date Paid' => 'Date Paid', + 'Date Updated' => 'Date Updated', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'Date from which the discount will be active. Leave blank for unlimited start date', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'Date from which the sale will be active. Leave blank for unlimited start date', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'Date when the discount will be finished. Leave blank for unlimited end date', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'Date when the sale will be finished. Leave blank for unlimited end date', + 'Date' => 'Date', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'Default - Allow the price to be negative if discounts are greater than the order value.', + 'Default Category' => 'Default Category', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.', + 'Default Order PDF' => 'Default Order PDF', + 'Default Per Item Rate' => 'Default Per Item Rate', + 'Default Percentage Rate' => 'Default Percentage Rate', + 'Default Status?' => 'Default Status?', + 'Default View' => 'Default View', + 'Default Weight Rate' => 'Default Weight Rate', + 'Default Zone' => 'Default Zone', + 'Default status?' => 'Default status?', + 'Default to this tax zone when no billing address is set' => 'Default to this tax zone when no billing address is set', + 'Default to this tax zone when no shipping address is set' => 'Default to this tax zone when no shipping address is set', + 'Default variant updated.' => 'Default variant updated.', + 'Default' => 'Default', + 'Default?' => 'Default?', + 'Delete catalog pricing rules' => 'Delete catalog pricing rules', + 'Delete discounts' => 'Delete discounts', + 'Delete orders' => 'Delete orders', + 'Delete sales' => 'Delete sales', + 'Delete' => 'Delete', + 'Deleting the {location} location.' => 'Deleting the {location} location.', + 'Describe this rule.' => 'Describe this rule.', + 'Describe this shipping zone.' => 'Describe this shipping zone.', + 'Describe this tax zone.' => 'Describe this tax zone.', + 'Description' => 'Description', + 'Destination Inventory Location' => 'Destination Inventory Location', + 'Destination' => 'Destination', + 'Details' => 'Details', + 'Dimension Unit' => 'Dimension Unit', + 'Dimensions' => 'Dimensions', + 'Disabled' => 'Disabled', + 'Disallow' => 'Disallow', + 'Discount all line items' => 'Discount all line items', + 'Discount description.' => 'Discount description.', + 'Discount is not allowed for the order' => 'Discount is not allowed for the order', + 'Discount is out of date.' => 'Discount is out of date.', + 'Discount saved.' => 'Discount saved.', + 'Discount the matching items only' => 'Discount the matching items only', + 'Discount use has reached its limit.' => 'Discount use has reached its limit.', + 'Discount' => 'Discount', + 'Discounted Item Subtotal' => 'Discounted Item Subtotal', + 'Discounted Items' => 'Discounted Items', + 'Discounts deleted.' => 'Discounts deleted.', + 'Discounts reordered.' => 'Discounts reordered.', + 'Discounts updated.' => 'Discounts updated.', + 'Discounts' => 'Discounts', + 'Disqualify with valid business tax ID?' => 'Disqualify with valid business tax ID?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'Do not apply subsequent matching sales beyond applying this sale.', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => 'Do not apply this rate if the order address has any of the selected valid business tax IDs.', + 'Do not attach a PDF to this email' => 'Do not attach a PDF to this email', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.', + 'Donation Settings' => 'Donation Settings', + 'Donation can not be zero.' => 'Donation can not be zero.', + 'Donation needs to be an amount.' => 'Donation needs to be an amount.', + 'Donation settings saved.' => 'Donation settings saved.', + 'Donation' => 'Donation', + 'Donations' => 'Donations', + 'Done' => 'Done', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'Don’t apply any subsequent discounts to an order if this discount is applied', + 'Download PDF' => 'Download PDF', + 'Download PDF…' => 'Download PDF…', + 'Download Type' => 'Download Type', + 'Download' => 'Download', + 'Draft' => 'Draft', + 'Dummy gateway payment failed.' => 'Dummy gateway payment failed.', + 'Duplicate options exist' => 'Duplicate options exist', + 'Duration' => 'Duration', + 'EU VAT ID' => 'EU VAT ID', + 'Edit Inventory Location' => 'Edit Inventory Location', + 'Edit Store' => 'Edit Store', + 'Edit address' => 'Edit address', + 'Edit adjustments' => 'Edit adjustments', + 'Edit catalog pricing rules' => 'Edit catalog pricing rules', + 'Edit discounts' => 'Edit discounts', + 'Edit options' => 'Edit options', + 'Edit orders' => 'Edit orders', + 'Edit sales' => 'Edit sales', + 'Edit' => 'Edit', + 'Effect' => 'Effect', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'Either (Default) - The relationship field is on the purchasable or the category', + 'Either way' => 'Either way', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.', + 'Email Subject' => 'Email Subject', + 'Email error. No email address found for order. Order: “{order}”' => 'Email error. No email address found for order. Order: “{order}”', + 'Email is not enabled.' => 'Email is not enabled.', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email required to make payments on a completed order.' => 'Email required to make payments on a completed order.', + 'Email saved.' => 'Email saved.', + 'Email sent' => 'Email sent', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}', + 'Email unavailable.' => 'Email unavailable.', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}', + 'Email “{email}” for order {order} was cancelled.' => 'Email “{email}” for order {order} was cancelled.', + 'Email' => 'Email', + 'Emails' => 'Emails', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.', + 'Enable structure for products of this type' => 'Enable structure for products of this type', + 'Enable this discount' => 'Enable this discount', + 'Enable this rule' => 'Enable this rule', + 'Enable this sale' => 'Enable this sale', + 'Enable this shipping method on the front end' => 'Enable this shipping method on the front end', + 'Enable this shipping rule' => 'Enable this shipping rule', + 'Enable this tax rate' => 'Enable this tax rate', + 'Enable versioning for products of this type' => 'Enable versioning for products of this type', + 'Enabled for customers to select during checkout?' => 'Enabled for customers to select during checkout?', + 'Enabled for customers to select?' => 'Enabled for customers to select?', + 'Enabled' => 'Enabled', + 'Enabled?' => 'Enabled?', + 'End Date' => 'End Date', + 'Enter SKU' => 'Enter SKU', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'Enter a human-friendly name for this tax rate to be used in the control panel.', + 'Enter a percentage like {ex1} or {ex2}.' => 'Enter a percentage like {ex1} or {ex2}.', + 'Enter coupon code' => 'Enter coupon code', + 'Enter reference' => 'Enter reference', + 'Error refunding transaction: {transactionHash}' => 'Error refunding transaction: {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'Every new store must be assigned to at least one site.', + 'Everywhere' => 'Everywhere', + 'Example' => 'Example', + 'Exclude this discount for products that are already on promotion' => 'Exclude this discount for products that are already on promotion', + 'Expired Link' => 'Expired Link', + 'Expired' => 'Expired', + 'Expiry Date' => 'Expiry Date', + 'Expiry date' => 'Expiry date', + 'Expiry' => 'Expiry', + 'Failed to receive transfer: {error}' => 'Failed to receive transfer: {error}', + 'Failed to send email. Please try again.' => 'Failed to send email. Please try again.', + 'Failed to start' => 'Failed to start', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => 'Failed to update {num, plural, =1{order status} other{order statuses}}.', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => 'Failed updating order status on {num, plural, =1{order} other{orders}}.', + 'Failed' => 'Failed', + 'Feet (ft)' => 'Feet (ft)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.', + 'First Name' => 'First Name', + 'Flat Amount Off Order' => 'Flat Amount Off Order', + 'Flat Order Discount Amount Off' => 'Flat Order Discount Amount Off', + 'Free Order Payment Strategy' => 'Free Order Payment Strategy', + 'Free Shipping' => 'Free Shipping', + 'Free orders are processed by the payment gateway' => 'Free orders are processed by the payment gateway', + 'Free orders complete immediately' => 'Free orders complete immediately', + 'Free shipping can only be for whole order or matching items, not both.' => 'Free shipping can only be for whole order or matching items, not both.', + 'From Name' => 'From Name', + 'Fulfill' => 'Fulfill', + 'Fulfilled' => 'Fulfilled', + 'Fulfillment' => 'Fulfillment', + 'Full Name' => 'Full Name', + 'Gateway Code' => 'Gateway Code', + 'Gateway Message' => 'Gateway Message', + 'Gateway Reference' => 'Gateway Reference', + 'Gateway Response' => 'Gateway Response', + 'Gateway doesn’t support authorize' => 'Gateway doesn’t support authorize', + 'Gateway doesn’t support partial refunds.' => 'Gateway doesn’t support partial refunds.', + 'Gateway doesn’t support purchase' => 'Gateway doesn’t support purchase', + 'Gateway doesn’t support refunds.' => 'Gateway doesn’t support refunds.', + 'Gateway saved.' => 'Gateway saved.', + 'Gateway' => 'Gateway', + 'Gateways reordered.' => 'Gateways reordered.', + 'Gateways' => 'Gateways', + 'General Settings' => 'General Settings', + 'General' => 'General', + 'Generate' => 'Generate', + 'Generated Coupon Format' => 'Generated Coupon Format', + 'Grams (g)' => 'Grams (g)', + 'Groups for which this sale will be applicable to.' => 'Groups for which this sale will be applicable to.', + 'HTML Email Template Path' => 'HTML Email Template Path', + 'Handle' => 'Handle', + 'Harmonized System Code' => 'Harmonized System Code', + 'Has Admin Notices' => 'Has Admin Notices', + 'Has Emails?' => 'Has Emails?', + 'Has Free Shipping' => 'Has Free Shipping', + 'Has Orders' => 'Has Orders', + 'Has Purchasable' => 'Has Purchasable', + 'Has Transactions?' => 'Has Transactions?', + 'Has Variants?' => 'Has Variants?', + 'Height ({unit})' => 'Height ({unit})', + 'Height' => 'Height', + 'Hide snapshot' => 'Hide snapshot', + 'History' => 'History', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.', + 'How products should be labeled within the control panel.' => 'How products should be labeled within the control panel.', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}', + 'How this shipping method will be referred to in templates and forms.' => 'How this shipping method will be referred to in templates and forms.', + 'How variants should be labeled within the control panel.' => 'How variants should be labeled within the control panel.', + 'How you’ll refer to this PDF in the templates.' => 'How you’ll refer to this PDF in the templates.', + 'How you’ll refer to this gateway in the templates.' => 'How you’ll refer to this gateway in the templates.', + 'How you’ll refer to this product type in the templates.' => 'How you’ll refer to this product type in the templates.', + 'How you’ll refer to this shipping category in the templates.' => 'How you’ll refer to this shipping category in the templates.', + 'How you’ll refer to this status in the templates.' => 'How you’ll refer to this status in the templates.', + 'How you’ll refer to this store in the templates.' => 'How you’ll refer to this store in the templates.', + 'How you’ll refer to this subscription plan in the templates.' => 'How you’ll refer to this subscription plan in the templates.', + 'How you’ll refer to this tax category in the templates.' => 'How you’ll refer to this tax category in the templates.', + 'ID' => 'ID', + 'IP Address' => 'IP Address', + 'If disabled, this PDF will not be available or sent with emails.' => 'If disabled, this PDF will not be available or sent with emails.', + 'If disabled, this email will not send.' => 'If disabled, this email will not send.', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.', + 'Ignore Promotions?' => 'Ignore Promotions?', + 'Ignore previous matching sales if this sale matches.' => 'Ignore previous matching sales if this sale matches.', + 'Ignore promotional prices when this discount is applied to matching line items' => 'Ignore promotional prices when this discount is applied to matching line items', + 'Inactive Carts' => 'Inactive Carts', + 'Inches (in)' => 'Inches (in)', + 'Include built-in line item tax.' => 'Include built-in line item tax.', + 'Include in price?' => 'Include in price?', + 'Include line item discounts.' => 'Include line item discounts.', + 'Include line item shipping costs.' => 'Include line item shipping costs.', + 'Include separate line item tax.' => 'Include separate line item tax.', + 'Included in price?' => 'Included in price?', + 'Included' => 'Included', + 'Incoming transfer from Transfer ID: {id}' => 'Incoming transfer from Transfer ID: {id}', + 'Incoming transfer from Transfer ID: ' => 'Incoming transfer from Transfer ID: ', + 'Incoming' => 'Incoming', + 'Info' => 'Info', + 'Information linked?' => 'Information linked?', + 'Information' => 'Information', + 'Invalid JSON' => 'Invalid JSON', + 'Invalid Order ID' => 'Invalid Order ID', + 'Invalid VAT ID.' => 'Invalid VAT ID.', + 'Invalid condition syntax' => 'Invalid condition syntax', + 'Invalid email.' => 'Invalid email.', + 'Invalid formula syntax' => 'Invalid formula syntax', + 'Invalid gateway: {value}' => 'Invalid gateway: {value}', + 'Invalid inventory movements.' => 'Invalid inventory movements.', + 'Invalid order condition syntax.' => 'Invalid order condition syntax.', + 'Invalid payment or order. Please review.' => 'Invalid payment or order. Please review.', + 'Invalid payment source ID: {value}' => 'Invalid payment source ID: {value}', + 'Invalid store.' => 'Invalid store.', + 'Invalid user.' => 'Invalid user.', + 'Inventory Item' => 'Inventory Item', + 'Inventory Location' => 'Inventory Location', + 'Inventory Locations' => 'Inventory Locations', + 'Inventory Tracked' => 'Inventory Tracked', + 'Inventory Transfers' => 'Inventory Transfers', + 'Inventory could not be set.' => 'Inventory could not be set.', + 'Inventory item saved.' => 'Inventory item saved.', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => 'Inventory location has committed stock, the order(s) must first be fulfilled.', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => 'Inventory location has incoming stock, the transfer(s) must first be completed.', + 'Inventory location is already deactivated.' => 'Inventory location is already deactivated.', + 'Inventory location saved.' => 'Inventory location saved.', + 'Inventory locations not saved.' => 'Inventory locations not saved.', + 'Inventory movement could not be saved.' => 'Inventory movement could not be saved.', + 'Inventory movement saved.' => 'Inventory movement saved.', + 'Inventory updated.' => 'Inventory updated.', + 'Inventory was not updated.' => 'Inventory was not updated.', + 'Inventory' => 'Inventory', + 'Invoice amount' => 'Invoice amount', + 'Invoice date' => 'Invoice date', + 'Is Promotable' => 'Is Promotable', + 'Is Promotional Price?' => 'Is Promotional Price?', + 'Is Shippable' => 'Is Shippable', + 'Is Taxable' => 'Is Taxable', + 'Item Rates' => 'Item Rates', + 'Item Subtotal' => 'Item Subtotal', + 'Item Total' => 'Item Total', + 'Item' => 'Item', + 'Items' => 'Items', + 'Kilograms (kg)' => 'Kilograms (kg)', + 'Label' => 'Label', + 'Landscape' => 'Landscape', + 'Language' => 'Language', + 'Last Name' => 'Last Name', + 'Last Updated' => 'Last Updated', + 'Leave a category rate override blank to use the rate from above.' => 'Leave a category rate override blank to use the rate from above.', + 'Leave blank for unlimited uses.' => 'Leave blank for unlimited uses.', + 'Leave blank if products don’t have URLs' => 'Leave blank if products don’t have URLs', + 'Leave gateway subscription as-is' => 'Leave gateway subscription as-is', + 'Length ({unit})' => 'Length ({unit})', + 'Length' => 'Length', + 'Let each product choose which sites it should be saved to' => 'Let each product choose which sites it should be saved to', + 'Limit which orders this discount applies to based on its line items.' => 'Limit which orders this discount applies to based on its line items.', + 'Limit which purchasables this sale applies to.' => 'Limit which purchasables this sale applies to.', + 'Limit' => 'Limit', + 'Line Item Statuses' => 'Line Item Statuses', + 'Line Item' => 'Line Item', + 'Line Items' => 'Line Items', + 'Line item price (minus discounts)' => 'Line item price (minus discounts)', + 'Line item shipping cost' => 'Line item shipping cost', + 'Line item status saved.' => 'Line item status saved.', + 'Line item statuses reordered.' => 'Line item statuses reordered.', + 'Link Duration' => 'Link Duration', + 'Link Sent' => 'Link Sent', + 'Link to a product' => 'Link to a product', + 'Link to a variant' => 'Link to a variant', + 'Link' => 'Link', + 'Live' => 'Live', + 'Location' => 'Location', + 'Locations that should be available for previewing products in this product type.' => 'Locations that should be available for previewing products in this product type.', + 'MM' => 'MM', + 'Make a payment' => 'Make a payment', + 'Make this the primary store' => 'Make this the primary store', + 'Manage Inventory' => 'Manage Inventory', + 'Manage donation settings' => 'Manage donation settings', + 'Manage general store settings' => 'Manage general store settings', + 'Manage inventory locations' => 'Manage inventory locations', + 'Manage inventory stock levels' => 'Manage inventory stock levels', + 'Manage inventory transfers' => 'Manage inventory transfers', + 'Manage orders' => 'Manage orders', + 'Manage payment currencies' => 'Manage payment currencies', + 'Manage promotions' => 'Manage promotions', + 'Manage shipping' => 'Manage shipping', + 'Manage store settings' => 'Manage store settings', + 'Manage subscription plans' => 'Manage subscription plans', + 'Manage subscription' => 'Manage subscription', + 'Manage subscriptions' => 'Manage subscriptions', + 'Manage taxes' => 'Manage taxes', + 'Manage' => 'Manage', + 'Mark as Pending' => 'Mark as Pending', + 'Mark as completed' => 'Mark as completed', + 'Match Billing Address' => 'Match Billing Address', + 'Match Customer' => 'Match Customer', + 'Match Order' => 'Match Order', + 'Match Orders' => 'Match Orders', + 'Match Product' => 'Match Product', + 'Match Purchasable' => 'Match Purchasable', + 'Match Shipping Address' => 'Match Shipping Address', + 'Match Variant' => 'Match Variant', + 'Match' => 'Match', + 'Matching Items' => 'Matching Items', + 'Max Qty' => 'Max Qty', + 'Max Uses' => 'Max Uses', + 'Max Variants' => 'Max Variants', + 'Max quantity must greater than min.' => 'Max quantity must greater than min.', + 'Maximum Purchase Quantity' => 'Maximum Purchase Quantity', + 'Maximum Total Shipping Cost' => 'Maximum Total Shipping Cost', + 'Maximum allowed quantity' => 'Maximum allowed quantity', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.', + 'Maximum order quantity for this item is {num}.' => 'Maximum order quantity for this item is {num}.', + 'Message' => 'Message', + 'Meters (m)' => 'Meters (m)', + 'Millimeters (mm)' => 'Millimeters (mm)', + 'Min Qty' => 'Min Qty', + 'Min quantity must be less than max.' => 'Min quantity must be less than max.', + 'Minimum Purchase Quantity' => 'Minimum Purchase Quantity', + 'Minimum Total Price Strategy' => 'Minimum Total Price Strategy', + 'Minimum Total Shipping Cost' => 'Minimum Total Shipping Cost', + 'Minimum allowed quantity' => 'Minimum allowed quantity', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'Minimum number of matching items that need to be ordered for this discount to apply.', + 'Minimum order quantity for this item is {num}.' => 'Minimum order quantity for this item is {num}.', + 'Missing Gateway' => 'Missing Gateway', + 'Missing a default inventory location.' => 'Missing a default inventory location.', + 'Move Inventory' => 'Move Inventory', + 'Move To' => 'Move To', + 'Move {qty} from {fromType} to {toType}' => 'Move {qty} from {fromType} to {toType}', + 'Move {type} Inventory' => 'Move {type} Inventory', + 'Move' => 'Move', + 'Movement from deactivated inventory location' => 'Movement from deactivated inventory location', + 'Movement' => 'Movement', + 'Must have at least one variant.' => 'Must have at least one variant.', + 'Name Field' => 'Name Field', + 'Name' => 'Name', + 'New Customer' => 'New Customer', + 'New Customers' => 'New Customers', + 'New Order' => 'New order', + 'New PDF' => 'New PDF', + 'New address' => 'New address', + 'New catalog pricing rule' => 'New catalog pricing rule', + 'New currency' => 'New currency', + 'New discount' => 'New discount', + 'New email' => 'New email', + 'New gateway' => 'New gateway', + 'New line item status' => 'New line item status', + 'New line items get this status by default when the order is completed' => 'New line items get this status by default when the order is completed', + 'New location' => 'New location', + 'New order status' => 'New order status', + 'New orders get this status by default' => 'New orders get this status by default', + 'New product type' => 'New product type', + 'New product' => 'New product', + 'New product, choose a type' => 'New product, choose a type', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => 'New products default to the first tax category available to them. If none are available, this category will be used.', + 'New sale' => 'New sale', + 'New shipping category' => 'New shipping category', + 'New shipping method' => 'New shipping method', + 'New shipping rule' => 'New shipping rule', + 'New shipping zone' => 'New shipping zone', + 'New store' => 'New store', + 'New subscription plan' => 'New subscription plan', + 'New tax category' => 'New tax category', + 'New tax rate' => 'New tax rate', + 'New tax zone' => 'New tax zone', + 'New transfer' => 'New transfer', + 'New {productType} product' => 'New {productType} product', + 'New' => 'New', + 'Next payment' => 'Next payment', + 'No Address' => 'No Address', + 'No PDFs exist yet.' => 'No PDFs exist yet.', + 'No access given to any specific store management features.' => 'No access given to any specific store management features.', + 'No additional payment currencies exist yet.' => 'No additional payment currencies exist yet.', + 'No address' => 'No address', + 'No billing address' => 'No billing address', + 'No catalog pricing rule exists with the ID “{id}”' => 'No catalog pricing rule exists with the ID “{id}”', + 'No catalog pricing rules exist yet.' => 'No catalog pricing rules exist yet.', + 'No currency exists with the ID “{id}”' => 'No currency exists with the ID “{id}”', + 'No customer email address exists on this cart.' => 'No customer email address exists on this cart.', + 'No description' => 'No description', + 'No discount exists with the ID “{id}”' => 'No discount exists with the ID “{id}”', + 'No discounts exist yet.' => 'No discounts exist yet.', + 'No donation amount supplied.' => 'No donation amount supplied.', + 'No emails exist yet.' => 'No emails exist yet.', + 'No gateways exist yet.' => 'No gateways exist yet.', + 'No inventory changes made.' => 'No inventory changes made.', + 'No inventory found.' => 'No inventory found.', + 'No inventory locations exist yet.' => 'No inventory locations exist yet.', + 'No inventory movements made.' => 'No inventory movements made.', + 'No inventory transactions for this location.' => 'No inventory transactions for this location.', + 'No line item statuses exist yet.' => 'No line item statuses exist yet.', + 'No new customer selected.' => 'No new customer selected.', + 'No order history exists with the ID “{id}”' => 'No order history exists with the ID “{id}”', + 'No order status history items will exist until the cart becomes an order.' => 'No order status history items will exist until the cart becomes an order.', + 'No order statuses exist yet.' => 'No order statuses exist yet.', + 'No payment source exists with the ID “{id}”' => 'No payment source exists with the ID “{id}”', + 'No private Note.' => 'No private Note.', + 'No product available.' => 'No product available.', + 'No product types exist yet.' => 'No product types exist yet.', + 'No purchasable available.' => 'No purchasable available.', + 'No sale exists with the ID “{id}”' => 'No sale exists with the ID “{id}”', + 'No sales exist yet.' => 'No sales exist yet.', + 'No shipping address' => 'No shipping address', + 'No shipping categories exist yet.' => 'No shipping categories exist yet.', + 'No shipping category exists with the ID “{id}”' => 'No shipping category exists with the ID “{id}”', + 'No shipping method exists with the ID “{id}”' => 'No shipping method exists with the ID “{id}”', + 'No shipping methods exist yet.' => 'No shipping methods exist yet.', + 'No shipping rule exists with the ID “{id}”' => 'No shipping rule exists with the ID “{id}”', + 'No shipping rules exist yet.' => 'No shipping rules exist yet.', + 'No shipping zone exists with the ID “{id}”' => 'No shipping zone exists with the ID “{id}”', + 'No shipping zones exist yet.' => 'No shipping zones exist yet.', + 'No stats available.' => 'No stats available.', + 'No stores exist yet.' => 'No stores exist yet.', + 'No subscription plan exists with the ID “{id}”' => 'No subscription plan exists with the ID “{id}”', + 'No subscription plans exist yet.' => 'No subscription plans exist yet.', + 'No tax categories exist yet.' => 'No tax categories exist yet.', + 'No tax category exists with the ID “{id}”' => 'No tax category exists with the ID “{id}”', + 'No tax rate exists with the ID “{id}”' => 'No tax rate exists with the ID “{id}”', + 'No tax rates exist yet.' => 'No tax rates exist yet.', + 'No tax zone exists with the ID “{id}”' => 'No tax zone exists with the ID “{id}”', + 'No tax zones exist yet.' => 'No tax zones exist yet.', + 'No transactions exist.' => 'No transactions exist.', + 'No unfulfilled orders.' => 'No unfulfilled orders.', + 'No user authenticated.' => 'No user authenticated.', + 'No' => 'No', + 'None on hand' => 'None on hand', + 'None' => 'None', + 'Not a valid address type' => 'Not a valid address type', + 'Not a valid credit card number.' => 'Not a valid credit card number.', + 'Not all SKUs are unique.' => 'Not all SKUs are unique.', + 'Note' => 'Note', + 'Notes' => 'Notes', + 'Number of Coupons' => 'Number of Coupons', + 'Number' => 'Number', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => 'Of the enabled sites above, which sites should products in this product type be saved to?', + 'On Hand' => 'On Hand', + 'Only allow for orders with a zero balance' => 'Only allow for orders with a zero balance', + 'Only allow orders with addresses that match the following rules:' => 'Only allow orders with addresses that match the following rules:', + 'Only allow this gateway to be used for zero value orders?' => 'Only allow this gateway to be used for zero value orders?', + 'Only match certain purchasables…' => 'Only match certain purchasables…', + 'Only match purchasables related to…' => 'Only match purchasables related to…', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => 'Only orders with the following order statuses will be included. Leave blank to include all statuses.', + 'Only save product to the site they were created in' => 'Only save product to the site they were created in', + 'Options' => 'Options', + 'Order Address Condition' => 'Order Address Condition', + 'Order Condition Formula' => 'Order Condition Formula', + 'Order Description Format' => 'Order Description Format', + 'Order Details' => 'Order Details', + 'Order Fields' => 'Order Fields', + 'Order PDF Download Link' => 'Order PDF Download Link', + 'Order PDF Filename Format' => 'Order PDF Filename Format', + 'Order Reference Number Format' => 'Order Reference Number Format', + 'Order Settings' => 'Order Settings', + 'Order Site' => 'Order Site', + 'Order Status description.' => 'Order Status description.', + 'Order Status' => 'Order Status', + 'Order Statuses' => 'Order Statuses', + 'Order can not be empty.' => 'Order can not be empty.', + 'Order count' => 'Order count', + 'Order customer data removed.' => 'Order customer data removed.', + 'Order deleted.' => 'Order deleted.', + 'Order fields saved.' => 'Order fields saved.', + 'Order not found.' => 'Order not found.', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.', + 'Order recalculated.' => 'Order recalculated.', + 'Order status saved.' => 'Order status saved.', + 'Order statuses reordered.' => 'Order statuses reordered.', + 'Order total shipping cost' => 'Order total shipping cost', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)', + 'Order {reference}' => 'Order {reference}', + 'Order' => 'Order', + 'Orders (Legacy)' => 'Orders (Legacy)', + 'Orders deleted.' => 'Orders deleted.', + 'Orders not restored.' => 'Orders not restored.', + 'Orders restored.' => 'Orders restored.', + 'Orders' => 'Orders', + 'Organization Name' => 'Organization Name', + 'Organization Tax ID' => 'Organization Tax ID', + 'Origin and destination cannot be the same.' => 'Origin and destination cannot be the same.', + 'Origin' => 'Origin', + 'Original Price' => 'Original Price', + 'Original price' => 'Original price', + 'Original promotional price' => 'Original promotional price', + 'Other Languages' => 'Other Languages', + 'Other countries' => 'Other countries', + 'Outgoing transfer from Transfer ID: {id}' => 'Outgoing transfer from Transfer ID: {id}', + 'Outgoing transfer from Transfer ID: ' => 'Outgoing transfer from Transfer ID: ', + 'Overpaid' => 'Overpaid', + 'Overrides previous?' => 'Overrides previous?', + 'PDF Attachment' => 'PDF Attachment', + 'PDF Template Path' => 'PDF Template Path', + 'PDF saved.' => 'PDF saved.', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'PDFs & Emails', + 'PDFs' => 'PDFs', + 'Paid Amount' => 'Paid Amount', + 'Paid Status' => 'Paid Status', + 'Paid' => 'Paid', + 'Paper Orientation' => 'Paper Orientation', + 'Paper Size' => 'Paper Size', + 'Partial payment not allowed.' => 'Partial payment not allowed.', + 'Partial' => 'Partial', + 'Past year' => 'Past year', + 'Past {num} days' => 'Past {num} days', + 'Pay {amount} of {currency} on the order.' => 'Pay {amount} of {currency} on the order.', + 'Pay' => 'Pay', + 'Payment Amount' => 'Payment Amount', + 'Payment Currencies' => 'Payment Currencies', + 'Payment Gateway' => 'Payment Gateway', + 'Payment Method' => 'Payment Method', + 'Payment Sources' => 'Payment Sources', + 'Payment Type' => 'Payment Type', + 'Payment error: {message}' => 'Payment error: {message}', + 'Payment method issue' => 'Payment method issue', + 'Payment source created.' => 'Payment source created.', + 'Payment source deleted.' => 'Payment source deleted.', + 'Payments' => 'Payments', + 'Pending' => 'Pending', + 'Per Email Address Discount Limit' => 'Per Email Address Discount Limit', + 'Per Item Amount Off' => 'Per Item Amount Off', + 'Per Item Discount' => 'Per Item Discount', + 'Per Item Percentage Off' => 'Per Item Percentage Off', + 'Per Item Rate' => 'Per Item Rate', + 'Per User Discount Limit' => 'Per User Discount Limit', + 'Percentage Rate' => 'Percentage Rate', + 'Phone (Alt)' => 'Phone (Alt)', + 'Phone' => 'Phone', + 'Pick a plan' => 'Pick a plan', + 'Plain Text Email Template Path' => 'Plain Text Email Template Path', + 'Plan' => 'Plan', + 'Plans reordered.' => 'Plans reordered.', + 'Portrait' => 'Portrait', + 'Post Date' => 'Post Date', + 'Postal Code Formula' => 'Postal Code Formula', + 'Pounds (lb)' => 'Pounds (lb)', + 'Preview' => 'Preview', + 'Previous Status' => 'Previous Status', + 'Price Type' => 'Price Type', + 'Price' => 'Price', + 'Prices' => 'Prices', + 'Pricing Rules' => 'Pricing Rules', + 'Pricing jobs are currently running.' => 'Pricing jobs are currently running.', + 'Pricing' => 'Pricing', + 'Primary Billing Address ID' => 'Primary Billing Address ID', + 'Primary Billing Address' => 'Primary Billing Address', + 'Primary Shipping Address ID' => 'Primary Shipping Address ID', + 'Primary Shipping Address' => 'Primary Shipping Address', + 'Primary payment source updated.' => 'Primary payment source updated.', + 'Primary' => 'Primary', + 'Private Note' => 'Private Note', + 'Processing' => 'Processing', + 'Product Fields' => 'Product Fields', + 'Product ID is required.' => 'Product ID is required.', + 'Product Template' => 'Product Template', + 'Product Title Format' => 'Product Title Format', + 'Product Type' => 'Product Type', + 'Product Types' => 'Product Types', + 'Product URI Format' => 'Product URI Format', + 'Product Variant' => 'Product Variant', + 'Product Variants' => 'Product Variants', + 'Product type saved.' => 'Product type saved.', + 'Product type settings' => 'Product type settings', + 'Product' => 'Product', + 'Products and Variants deleted.' => 'Products and Variants deleted.', + 'Products not restored.' => 'Products not restored.', + 'Products restored.' => 'Products restored.', + 'Products' => 'Products', + 'Promotable' => 'Promotable', + 'Promotable?' => 'Promotable?', + 'Promotional Amount' => 'Promotional Amount', + 'Promotional Price' => 'Promotional Price', + 'Purchasable Categories' => 'Purchasable Categories', + 'Purchasable ID and Sale ID are required.' => 'Purchasable ID and Sale ID are required.', + 'Purchasable ID is required.' => 'Purchasable ID is required.', + 'Purchasable Type' => 'Purchasable Type', + 'Purchasable' => 'Purchasable', + 'Purchase (Authorize and Capture Immediately)' => 'Purchase (Authorize and Capture Immediately)', + 'Purchase Total' => 'Purchase Total', + 'Purchase' => 'Purchase', + 'Qty' => 'Qty', + 'Quality Control' => 'Quality Control', + 'Quantity' => 'Quantity', + 'Rate' => 'Rate', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => 'Reassign {numOrders, plural, =1{order} other{orders}}', + 'Recalculate order' => 'Recalculate order', + 'Receive Inventory' => 'Receive Inventory', + 'Receive Transfer' => 'Receive Transfer', + 'Receive' => 'Receive', + 'Received' => 'Received', + 'Recent Orders' => 'Recent Orders', + 'Recent Orders – {orderStatus}' => 'Recent Orders – {orderStatus}', + 'Recipient' => 'Recipient', + 'Recover Cart' => 'Recover Cart', + 'Redirect' => 'Redirect', + 'Reduce price' => 'Reduce price', + 'Reduce the price by a fixed amount' => 'Reduce the price by a fixed amount', + 'Reduce the price by a percentage of the original price' => 'Reduce the price by a percentage of the original price', + 'Reference' => 'Reference', + 'Refresh payment history' => 'Refresh payment history', + 'Refund note' => 'Refund note', + 'Refund payment' => 'Refund payment', + 'Refund' => 'Refund', + 'Reject' => 'Reject', + 'Rejected' => 'Rejected', + 'Relationship Type' => 'Relationship Type', + 'Removable included tax rates are only allowed for the default tax zone.' => 'Removable included tax rates are only allowed for the default tax zone.', + 'Remove address' => 'Remove address', + 'Remove all shipping costs from the order' => 'Remove all shipping costs from the order', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below', + 'Remove customer data' => 'Remove customer data', + 'Remove from price?' => 'Remove from price?', + 'Remove shipping costs for matching items only' => 'Remove shipping costs for matching items only', + 'Remove the included tax when a valid organization tax ID is present?' => 'Remove the included tax when a valid organization tax ID is present?', + 'Remove' => 'Remove', + 'Removed' => 'Removed', + 'Repeat Customers' => 'Repeat Customers', + 'Reply To' => 'Reply To', + 'Require Billing Address At Checkout' => 'Require Billing Address At Checkout', + 'Require Coupon Code' => 'Require Coupon Code', + 'Require Shipping Address At Checkout' => 'Require Shipping Address At Checkout', + 'Require Shipping Method Selection At Checkout' => 'Require Shipping Method Selection At Checkout', + 'Require' => 'Require', + 'Reserved' => 'Reserved', + 'Reset usage' => 'Reset usage', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.', + 'Revenue Options' => 'Revenue Options', + 'Revenue' => 'Revenue', + 'Rule' => 'Rule', + 'Rules reordered.' => 'Rules reordered.', + 'SKU' => 'SKU', + 'Safety' => 'Safety', + 'Sale Price' => 'Sale Price', + 'Sale description.' => 'Sale description.', + 'Sale reordered.' => 'Sale reordered.', + 'Sale saved.' => 'Sale saved.', + 'Sale' => 'Sale', + 'Sales deleted.' => 'Sales deleted.', + 'Sales updated.' => 'Sales updated.', + 'Sales' => 'Sales', + 'Save and continue editing' => 'Save and continue editing', + 'Save and return to all orders' => 'Save and return to all orders', + 'Save and set rules' => 'Save and set rules', + 'Save as a new rule' => 'Save as a new rule', + 'Save product to all sites enabled for this product type' => 'Save product to all sites enabled for this product type', + 'Save product to other sites in the same site group' => 'Save product to other sites in the same site group', + 'Save product to other sites with the same language' => 'Save product to other sites with the same language', + 'Save' => 'Save', + 'Saving this discount will delete its coupons because Require Coupon Code is turned off.' => 'Saving this discount will delete its coupons because Require Coupon Code is turned off.', + 'Search customer…' => 'Search customer…', + 'Search inventory' => 'Search inventory', + 'Search or enter customer email…' => 'Search or enter customer email…', + 'Search…' => 'Search…', + 'See Orders' => 'See Orders', + 'Select a gateway' => 'Select a gateway', + 'Select a tax category.' => 'Select a tax category.', + 'Select a tax zone. If empty, this rate will match anywhere.' => 'Select a tax zone. If empty, this rate will match anywhere.', + 'Select address' => 'Select address', + 'Select an item' => 'Select an item', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'Select how the catalog pricing rule will be applied to the purchasable(s).', + 'Select how the sale will be applied to the purchasable(s).' => 'Select how the sale will be applied to the purchasable(s).', + 'Select product type' => 'Select product type', + 'Select the emails that will be sent when transitioning to this status.' => 'Select the emails that will be sent when transitioning to this status.', + 'Select what this rate should be applied to.' => 'Select what this rate should be applied to.', + 'Send Email' => 'Send Email', + 'Send to custom recipient' => 'Send to custom recipient', + 'Send to the customer' => 'Send to the customer', + 'Set Quantity' => 'Set Quantity', + 'Set default category' => 'Set default category', + 'Set default variant' => 'Set default variant', + 'Set or Adjust' => 'Set or Adjust', + 'Set price' => 'Set price', + 'Set status' => 'Set status', + 'Set the price to a flat amount' => 'Set the price to a flat amount', + 'Set the price to a percentage of the original price' => 'Set the price to a percentage of the original price', + 'Set the sale price to a flat amount' => 'Set the sale price to a flat amount', + 'Set the sale price to a percentage of the original price' => 'Set the sale price to a percentage of the original price', + 'Set to' => 'Set to', + 'Set {type} Quantity' => 'Set {type} Quantity', + 'Settings saved.' => 'Settings saved.', + 'Settings' => 'Settings', + 'Share cart…' => 'Share cart…', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.', + 'Shipping Address Zone' => 'Shipping Address Zone', + 'Shipping Address' => 'Shipping Address', + 'Shipping Business Name' => 'Shipping Business Name', + 'Shipping Categories' => 'Shipping Categories', + 'Shipping Category Conditions' => 'Shipping Category Conditions', + 'Shipping Category' => 'Shipping Category', + 'Shipping First Name' => 'Shipping First Name', + 'Shipping Full Name' => 'Shipping Full Name', + 'Shipping Last Name' => 'Shipping Last Name', + 'Shipping Method' => 'Shipping Method', + 'Shipping Methods' => 'Shipping Methods', + 'Shipping Rule' => 'Shipping Rule', + 'Shipping Zones' => 'Shipping Zones', + 'Shipping address required.' => 'Shipping address required.', + 'Shipping categories deleted.' => 'Shipping categories deleted.', + 'Shipping category saved.' => 'Shipping category saved.', + 'Shipping category updated.' => 'Shipping category updated.', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.', + 'Shipping method saved.' => 'Shipping method saved.', + 'Shipping methods and rules deleted.' => 'Shipping methods and rules deleted.', + 'Shipping methods updated.' => 'Shipping methods updated.', + 'Shipping rule deleted.' => 'Shipping rule deleted.', + 'Shipping rule saved.' => 'Shipping rule saved.', + 'Shipping zone saved.' => 'Shipping zone saved.', + 'Shipping' => 'Shipping', + 'Short Number' => 'Short Number', + 'Show Chart?' => 'Show Chart?', + 'Show Order Count?' => 'Show Order Count?', + 'Show all prices' => 'Show all prices', + 'Show archived gateways' => 'Show archived gateways', + 'Show order count line on chart.' => 'Show order count line on chart.', + 'Show related sales' => 'Show related sales', + 'Show rule details' => 'Show rule details', + 'Show the Dimensions and Weight fields for products of this type' => 'Show the Dimensions and Weight fields for products of this type', + 'Show the Title field for products' => 'Show the Title field for products', + 'Show the Title field for variants' => 'Show the Title field for variants', + 'Signed In' => 'Signed In', + 'Site Languages' => 'Site Languages', + 'Site store mapping saved.' => 'Site store mapping saved.', + 'Sites' => 'Sites', + 'Slug' => 'Slug', + 'Snapshot' => 'Snapshot', + 'Snapshots' => 'Snapshots', + 'Some orders restored.' => 'Some orders restored.', + 'Some products restored.' => 'Some products restored.', + 'Some variants restored.' => 'Some variants restored.', + 'Something changed with the order before payment, please review your order and submit payment again.' => 'Something changed with the order before payment, please review your order and submit payment again.', + 'Sorry, no matching options.' => 'Sorry, no matching options.', + 'Source - The purchasable relationship field is on the category' => 'Source - The purchasable relationship field is on the category', + 'Source' => 'Source', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)', + 'Start Date' => 'Start Date', + 'State' => 'State', + 'Status Email Address' => 'Status Email Address', + 'Status Emails' => 'Status Emails', + 'Status History' => 'Status History', + 'Status Updated.' => 'Status Updated.', + 'Status change message' => 'Status change message', + 'Status' => 'Status', + 'Stock' => 'Stock', + 'Stops Processing?' => 'Stops Processing?', + 'Stops subsequent?' => 'Stops subsequent?', + 'Store Location' => 'Store Location', + 'Store Management' => 'Store Management', + 'Store Markets' => 'Store Markets', + 'Store Rule' => 'Store Rule', + 'Store for {site}' => 'Store for {site}', + 'Store saved.' => 'Store saved.', + 'Store' => 'Store', + 'Stores & Sites' => 'Stores & Sites', + 'Stores' => 'Stores', + 'Strategy to apply when an order is free or has a zero balance.' => 'Strategy to apply when an order is free or has a zero balance.', + 'Strategy to apply when calculating the minimum order price.' => 'Strategy to apply when calculating the minimum order price.', + 'Subject' => 'Subject', + 'Subscribing user' => 'Subscribing user', + 'Subscription Fields' => 'Subscription Fields', + 'Subscription Plans' => 'Subscription Plans', + 'Subscription Settings' => 'Subscription Settings', + 'Subscription cancelled.' => 'Subscription cancelled.', + 'Subscription date' => 'Subscription date', + 'Subscription fields saved.' => 'Subscription fields saved.', + 'Subscription for {user} to {plan} prevented by a plugin.' => 'Subscription for {user} to {plan} prevented by a plugin.', + 'Subscription plan saved.' => 'Subscription plan saved.', + 'Subscription plan' => 'Subscription plan', + 'Subscription plans' => 'Subscription plans', + 'Subscription reactivated.' => 'Subscription reactivated.', + 'Subscription reference' => 'Subscription reference', + 'Subscription started.' => 'Subscription started.', + 'Subscription switched.' => 'Subscription switched.', + 'Subscription to “{plan}”' => 'Subscription to “{plan}”', + 'Subscription' => 'Subscription', + 'Subscriptions on hold' => 'Subscriptions on hold', + 'Subscriptions' => 'Subscriptions', + 'Success' => 'Success', + 'Suppress emails' => 'Suppress emails', + 'Switch plan' => 'Switch plan', + 'Switch' => 'Switch', + 'System' => 'System', + 'Table Columns' => 'Table Columns', + 'Target - The category relationship field is on the purchasable' => 'Target - The category relationship field is on the purchasable', + 'Tax & Shipping' => 'Tax & Shipping', + 'Tax (inc)' => 'Tax (inc)', + 'Tax Categories' => 'Tax Categories', + 'Tax Category' => 'Tax Category', + 'Tax Rates' => 'Tax Rates', + 'Tax Zone' => 'Tax Zone', + 'Tax Zones' => 'Tax Zones', + 'Tax categories deleted.' => 'Tax categories deleted.', + 'Tax category saved.' => 'Tax category saved.', + 'Tax category updated.' => 'Tax category updated.', + 'Tax rate saved.' => 'Tax rate saved.', + 'Tax rates updated.' => 'Tax rates updated.', + 'Tax zone saved.' => 'Tax zone saved.', + 'Tax' => 'Tax', + 'Taxable Subject' => 'Taxable Subject', + 'Template Path' => 'Template Path', + 'That handle is already in use' => 'That handle is already in use', + 'That handle is already in use.' => 'That handle is already in use.', + 'The PDF to attach to this email.' => 'The PDF to attach to this email.', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.', + 'The URL/URI to use for this target.' => 'The URL/URI to use for this target.', + 'The address provided is outside the store’s market.' => 'The address provided is outside the store’s market.', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.', + 'The cart recovery link is invalid. Please request a new one.' => 'The cart recovery link is invalid. Please request a new one.', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.', + 'The countries that orders are allowed to be placed from.' => 'The countries that orders are allowed to be placed from.', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'The coupon "{code}" has exceeded its usage limit of {limit}.', + 'The customer for this order has been deleted.' => 'The customer for this order has been deleted.', + 'The default shipping category is automatically available to all product types.' => 'The default shipping category is automatically available to all product types.', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'The discount "{name}" has exceeded its total usage limit of {limit}.', + 'The download link has expired. Please request a new one.' => 'The download link has expired. Please request a new one.', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.', + 'The entry that contains the description for this subscription’s plan.' => 'The entry that contains the description for this subscription’s plan.', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => 'The flat value which should discount each item. i.e “3” for $3 off each item.', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.', + 'The from and to inventory locations must be different.' => 'The from and to inventory locations must be different.', + 'The inventory locations this store uses.' => 'The inventory locations this store uses.', + 'The item is not enabled for sale.' => 'The item is not enabled for sale.', + 'The language the order was made in.' => 'The language the order was made in.', + 'The language to be used when PDF is rendered.' => 'The language to be used when PDF is rendered.', + 'The language to be used when this email is rendered.' => 'The language to be used when this email is rendered.', + 'The maximum number of inventory locations for this edition has been reached.' => 'The maximum number of inventory locations for this edition has been reached.', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'The maximum number of levels this product type can have. Leave blank if you don’t care.', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => 'The maximum the customer should spend on shipping. Set to zero to disable.', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => 'The minimum the customer should spend on shipping. Set to zero to disable.', + 'The order is not valid.' => 'The order is not valid.', + 'The payment gateway that will be used for the subscription plan.' => 'The payment gateway that will be used for the subscription plan.', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.', + 'The previously-selected shipping method is no longer available.' => 'The previously-selected shipping method is no longer available.', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}', + 'The primary currency cannot be changed after orders are placed.' => 'The primary currency cannot be changed after orders are placed.', + 'The purchasable defines the relationship' => 'The purchasable defines the relationship', + 'The purchasable is related by another element' => 'The purchasable is related by another element', + 'The recipient of the email. Twig code can be used here.' => 'The recipient of the email. Twig code can be used here.', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.', + 'The site the order was made in.' => 'The site the order was made in.', + 'The site to be used when this email is rendered.' => 'The site to be used when this email is rendered.', + 'The subject line of the email. Twig code can be used here.' => 'The subject line of the email. Twig code can be used here.', + 'The template that the PDF should be generated from.' => 'The template that the PDF should be generated from.', + 'The template to be used for HTML emails.' => 'The template to be used for HTML emails.', + 'The template to be used for plain text emails. Twig code can be used here.' => 'The template to be used for plain text emails. Twig code can be used here.', + 'The template to use when a product’s URL is requested.' => 'The template to use when a product’s URL is requested.', + 'The total number of order adjustments changed.' => 'The total number of order adjustments changed.', + 'The total price of the order changed.' => 'The total price of the order changed.', + 'The total quantity of items within the order changed.' => 'The total quantity of items within the order changed.', + 'The unique SKU of the donation purchasable.' => 'The unique SKU of the donation purchasable.', + 'The unit of measurement that should be used when specifying product dimensions.' => 'The unit of measurement that should be used when specifying product dimensions.', + 'The unit of measurement that should be used when specifying product weights.' => 'The unit of measurement that should be used when specifying product weights.', + 'The webhook URL for this gateway.' => 'The webhook URL for this gateway.', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.', + 'There are errors on the order' => 'There are errors on the order', + 'There are only {num} “{description}” items left in stock.' => 'There are only {num} “{description}” items left in stock.', + 'There aren’t any product types to select yet.' => 'There aren’t any product types to select yet.', + 'There is no gateway or payment source available for use with this order.' => 'There is no gateway or payment source available for use with this order.', + 'There is no gateway selected that supports payment sources.' => 'There is no gateway selected that supports payment sources.', + 'There is no shipping method selected for this order.' => 'There is no shipping method selected for this order.', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'This URL will load the cart into the user’s session, making it the active cart.', + 'This action is not allowed for the current user.' => 'This action is not allowed for the current user.', + 'This category will be used as the default for all purchasables in this store.' => 'This category will be used as the default for all purchasables in this store.', + 'This coupon is for registered users and limited to {limit} uses.' => 'This coupon is for registered users and limited to {limit} uses.', + 'This coupon is limited to {limit} uses.' => 'This coupon is limited to {limit} uses.', + 'This coupon requires an email address.' => 'This coupon requires an email address.', + 'This gateway does not support that functionality.' => 'This gateway does not support that functionality.', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'This is being overridden by the {setting} config setting in `config/{file}.php`.', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'This is the default PDF that will be rendered when requesting the order PDF.', + 'This is the last location for the {store} store.' => 'This is the last location for the {store} store.', + 'This month' => 'This month', + 'This order has unsaved changes.' => 'This order has unsaved changes.', + 'This week' => 'This week', + 'This year' => 'This year', + 'Times Used' => 'Times Used', + 'Title' => 'Title', + 'To' => 'To', + 'Today' => 'Today', + 'Too many variants for this product.' => 'Too many variants for this product.', + 'Top Customers by Average Order' => 'Top Customers by Average Order', + 'Top Customers by Total Revenue' => 'Top Customers by Total Revenue', + 'Top Customers' => 'Top Customers', + 'Top Product Types by Qty Sold' => 'Top Product Types by Qty Sold', + 'Top Product Types by Revenue' => 'Top Product Types by Revenue', + 'Top Product Types' => 'Top Product Types', + 'Top Products by Qty Sold' => 'Top Products by Qty Sold', + 'Top Products by Revenue' => 'Top Products by Revenue', + 'Top Products' => 'Top Products', + 'Top Purchasables by Qty Sold' => 'Top Purchasables by Qty Sold', + 'Top Purchasables by Revenue' => 'Top Purchasables by Revenue', + 'Top Purchasables' => 'Top Purchasables', + 'Total ' => 'Total ', + 'Total Discount Use Limit' => 'Total Discount Use Limit', + 'Total Discount' => 'Total Discount', + 'Total Included Tax' => 'Total Included Tax', + 'Total Orders by Billing Country' => 'Total Orders by Billing Country', + 'Total Orders by Country' => 'Total Orders by Country', + 'Total Orders by Shipping Country' => 'Total Orders by Shipping Country', + 'Total Orders' => 'Total Orders', + 'Total Paid' => 'Total Paid', + 'Total Price' => 'Total Price', + 'Total Qty' => 'Total Qty', + 'Total Revenue' => 'Total Revenue', + 'Total Shipping' => 'Total Shipping', + 'Total Tax' => 'Total Tax', + 'Total Weight' => 'Total Weight', + 'Total {received}/{quantity}' => 'Total {received}/{quantity}', + 'Total' => 'Total', + 'Track Inventory' => 'Track Inventory', + 'Transaction Hash' => 'Transaction Hash', + 'Transaction ID' => 'Transaction ID', + 'Transaction captured successfully: {message}' => 'Transaction captured successfully: {message}', + 'Transaction refunded successfully: {message}' => 'Transaction refunded successfully: {message}', + 'Transactions' => 'Transactions', + 'Transfer Fields' => 'Transfer Fields', + 'Transfer Items' => 'Transfer Items', + 'Transfer Settings' => 'Transfer Settings', + 'Transfer Status' => 'Transfer Status', + 'Transfer fields saved.' => 'Transfer fields saved.', + 'Transfer marked as pending.' => 'Transfer marked as pending.', + 'Transfer must have at least one item.' => 'Transfer must have at least one item.', + 'Transfer' => 'Transfer', + 'Transfers' => 'Transfers', + 'Trial days credited' => 'Trial days credited', + 'Trial expiration' => 'Trial expiration', + 'Trial expiry date' => 'Trial expiry date', + 'Type not in allowed options.' => 'Type not in allowed options.', + 'Type' => 'Type', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => 'Unable to cancel subscription at this time.', + 'Unable to complete order: another request is already in progress.' => 'Unable to complete order: another request is already in progress.', + 'Unable to find variant.' => 'Unable to find variant.', + 'Unable to generate coupon codes: {message}' => 'Unable to generate coupon codes: {message}', + 'Unable to make payment at this time.' => 'Unable to make payment at this time.', + 'Unable to modify subscription at this time.' => 'Unable to modify subscription at this time.', + 'Unable to reactivate subscription at this time.' => 'Unable to reactivate subscription at this time.', + 'Unable to reassign orders.' => 'Unable to reassign orders.', + 'Unable to remove order data.' => 'Unable to remove order data.', + 'Unable to retrieve Sale and Purchasable.' => 'Unable to retrieve Sale and Purchasable.', + 'Unable to retrieve cart.' => 'Unable to retrieve cart.', + 'Unable to retrieve customer.' => 'Unable to retrieve customer.', + 'Unable to retrieve load cart URL' => 'Unable to retrieve load cart URL', + 'Unable to retrieve payment source.' => 'Unable to retrieve payment source.', + 'Unable to set default shipping category.' => 'Unable to set default shipping category.', + 'Unable to set default tax category.' => 'Unable to set default tax category.', + 'Unable to set primary payment source.' => 'Unable to set primary payment source.', + 'Unable to start the subscription. Please check your payment details.' => 'Unable to start the subscription. Please check your payment details.', + 'Unable to subscribe at this time.' => 'Unable to subscribe at this time.', + 'Unable to update cart.' => 'Unable to update cart.', + 'Unable to validate address.' => 'Unable to validate address.', + 'Unit Price' => 'Unit Price', + 'Unit price (minus discounts)' => 'Unit price (minus discounts)', + 'Units' => 'Units', + 'Unpaid' => 'Unpaid', + 'Unsubscribe' => 'Unsubscribe', + 'Update Address' => 'Update Address', + 'Update Order Status' => 'Update Order Status', + 'Update Order Status…' => 'Update Order Status…', + 'Update order' => 'Update order', + 'Update subscription' => 'Update subscription', + 'Update' => 'Update', + 'Updated By' => 'Updated By', + 'Updated committed stock successfully.' => 'Updated committed stock successfully.', + 'Updated' => 'Updated', + 'Use Billing Address For Tax' => 'Use Billing Address For Tax', + 'Use as the primary billing address' => 'Use as the primary billing address', + 'Use as the primary shipping address' => 'Use as the primary shipping address', + 'Used By Tax Rates' => 'Used By Tax Rates', + 'Used by Tax Rates' => 'Used by Tax Rates', + 'User Groups' => 'User Groups', + 'User not found.' => 'User not found.', + 'User' => 'User', + 'Uses' => 'Uses', + 'Validate Business Tax ID as Vat ID' => 'Validate Business Tax ID as Vat ID', + 'Validating condition syntax' => 'Validating condition syntax', + 'Validating formula syntax' => 'Validating formula syntax', + 'Variant Fields' => 'Variant Fields', + 'Variant Has Untracked Stock' => 'Variant Has Untracked Stock', + 'Variant Price' => 'Variant Price', + 'Variant SKU' => 'Variant SKU', + 'Variant Search' => 'Variant Search', + 'Variant Stock' => 'Variant Stock', + 'Variant Title Format' => 'Variant Title Format', + 'Variant Tracks Stock' => 'Variant Tracks Stock', + 'Variant UI Label Format' => 'Variant UI Label Format', + 'Variant has no product.' => 'Variant has no product.', + 'Variants can’t be edited from this screen yet.' => 'Variants can’t be edited from this screen yet.', + 'Variants not restored.' => 'Variants not restored.', + 'Variants restored.' => 'Variants restored.', + 'Variants' => 'Variants', + 'View customer' => 'View customer', + 'View order' => 'View order', + 'View product type - {productType}' => 'View product type - {productType}', + 'View user' => 'View user', + 'View' => 'View', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete it?' => 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete it?', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?', + 'Web' => 'Web', + 'Webhook URL' => 'Webhook URL', + 'Weight ({unit})' => 'Weight ({unit})', + 'Weight Rate' => 'Weight Rate', + 'Weight Unit' => 'Weight Unit', + 'Weight' => 'Weight', + 'What product URIs should look like for the site.' => 'What product URIs should look like for the site.', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}', + 'What this PDF will be called in the control panel.' => 'What this PDF will be called in the control panel.', + 'What this catalog pricing rule will be called in the control panel.' => 'What this catalog pricing rule will be called in the control panel.', + 'What this discount will be called in the control panel.' => 'What this discount will be called in the control panel.', + 'What this email will be called in the control panel.' => 'What this email will be called in the control panel.', + 'What this gateway will be called in the control panel.' => 'What this gateway will be called in the control panel.', + 'What this product type will be called in the control panel.' => 'What this product type will be called in the control panel.', + 'What this sale will be called in the control panel.' => 'What this sale will be called in the control panel.', + 'What this shipping category will be called in the control panel.' => 'What this shipping category will be called in the control panel.', + 'What this shipping rule will be called in the control panel.' => 'What this shipping rule will be called in the control panel.', + 'What this shipping zone will be called in the control panel.' => 'What this shipping zone will be called in the control panel.', + 'What this status will be called in the control panel.' => 'What this status will be called in the control panel.', + 'What this subscription plan will be called in the control panel.' => 'What this subscription plan will be called in the control panel.', + 'What this tax category will be called in the control panel.' => 'What this tax category will be called in the control panel.', + 'What this tax zone will be called in the control panel.' => 'What this tax zone will be called in the control panel.', + 'When this discount is applied to an order, which line items should be discounted?' => 'When this discount is applied to an order, which line items should be discounted?', + 'Whether the first available shipping method option should be set automatically on carts.' => 'Whether the first available shipping method option should be set automatically on carts.', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'Whether the user’s primary payment source should be set automatically on new carts.', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => 'Whether this catalog pricing rule should be available for use, regardless of other conditions.', + 'Whether this sale should be available for use, regardless of other conditions.' => 'Whether this sale should be available for use, regardless of other conditions.', + 'Which data to display in the name column in the results table.' => 'Which data to display in the name column in the results table.', + 'Which product types should this category be available to?' => 'Which product types should this category be available to?', + 'Which template should be loaded when a product’s URL is requested.' => 'Which template should be loaded when a product’s URL is requested.', + 'Which values should be included when calculating revenue?' => 'Which values should be included when calculating revenue?', + 'Width ({unit})' => 'Width ({unit})', + 'Width' => 'Width', + 'YYYY' => 'YYYY', + 'Yes' => 'Yes', + 'You are not allowed to add a line item.' => 'You are not allowed to add a line item.', + 'You are not permitted to perform this action for this store.' => 'You are not permitted to perform this action for this store.', + 'You currently have no emails configured to select for this status.' => 'You currently have no emails configured to select for this status.', + 'You do not have permission to load this cart.' => 'You do not have permission to load this cart.', + 'You must set up at least one gateway that supports subscriptions first.' => 'You must set up at least one gateway that supports subscriptions first.', + 'You must be logged in or provide a valid token to load this cart.' => 'You must be logged in or provide a valid token to load this cart.', + 'You must be signed in to create a payment source.' => 'You must be signed in to create a payment source.', + 'You must be signed in to set a primary payment source.' => 'You must be signed in to set a primary payment source.', + 'You must make a payment to complete the order.' => 'You must make a payment to complete the order.', + 'Your Cart Recovery Link' => 'Your Cart Recovery Link', + 'Your Order PDF Download Link' => 'Your Order PDF Download Link', + 'Your order is empty' => 'Your order is empty', + 'ZIP file' => 'ZIP file', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'Zero - Minimum price is zero if discounts are greater than the order value.', + 'Zip Code' => 'Zip Code', + 'all' => 'all', + 'any' => 'any', + 'average order total' => 'average order total', + 'billing address' => 'billing address', + 'donation' => 'donation', + 'donations' => 'donations', + 'info' => 'info', + 'inventory location' => 'inventory location', + 'is in all of' => 'is in all of', + 'new customers' => 'new customers', + 'on hand' => 'on hand', + 'only' => 'only', + 'order' => 'order', + 'orders' => 'orders', + 'price' => 'price', + 'prices' => 'prices', + 'product variant' => 'product variant', + 'product variants' => 'product variants', + 'product' => 'product', + 'products' => 'products', + 'repeat customers' => 'repeat customers', + 'shipping address' => 'shipping address', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'shippingSameAsBilling and billingSameAsShipping can’t both be set.', + 'subscription' => 'subscription', + 'subscriptions' => 'subscriptions', + 'to' => 'to', + 'transfer' => 'transfer', + 'transfers' => 'transfers', + '{amount} (new price)' => '{amount} (new price)', + '{amount} (of original price)' => '{amount} (of original price)', + '{amount} (off original price)' => '{amount} (off original price)', + '{amount} included' => '{amount} included', + '{count} Unfulfilled Orders' => '{count} Unfulfilled Orders', + '{count} on hand' => '{count} on hand', + '{count} time' => '{count} time', + '{count} times' => '{count} times', + '{description} is no longer available.' => '{description} is no longer available.', + '{description} only has {stock} in stock.' => '{description} only has {stock} in stock.', + '{from} to {to}' => '{from} to {to}', + '{item} currently has {quantity} {type} at {location}.' => '{item} currently has {quantity} {type} at {location}.', + '{label} — {description}' => '{label} — {description}', + '{label}: {value}' => '{label}: {value}', + '{location} Inventory' => '{location} Inventory', + '{name} (Primary)' => '{name} (Primary)', + '{name} (Trashed)' => '{name} (Trashed)', + '{name} Removed' => '{name} Removed', + '{name} catalog price' => '{name} catalog price', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, =1{Order} other{Orders}} updated.', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.', + '{number} more…' => '{number} more…', + '{pct} off the discounted item price' => '{pct} off the discounted item price', + '{pct} off the original item price' => '{pct} off the original item price', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.', + '{total} in total revenue' => '{total} in total revenue', + '{total} orders' => '{total} orders', + '{total} saleable across {locationCount} location(s)' => '{total} saleable across {locationCount} location(s)', + '{uses} uses across {emails} email addresses' => '{uses} uses across {emails} email addresses', + '{uses} uses across {users} users' => '{uses} uses across {users} users', + '“{description}” is currently out of stock.' => '“{description}” is currently out of stock.', + '“{key}” has invalid JSON' => '“{key}” has invalid JSON', + '“{value}” is a reserved word.' => '“{value}” is a reserved word.', +]; diff --git a/lang/fr-CA/commerce.php b/lang/fr-CA/commerce.php new file mode 100644 index 0000000000..28b0cda5e6 --- /dev/null +++ b/lang/fr-CA/commerce.php @@ -0,0 +1,1423 @@ + '(nouveau prix)', + '(of original price)' => '(du prix initial)', + '(off original price)' => '(en moins sur le prix initial)', + 'A cart number must be specified.' => 'Un numéro de panier doit être indiqué.', + 'A cart recovery link has been sent to {email}.' => 'Un lien de récupération de panier a été envoyé à {email}.', + 'A cart recovery link will be sent to {email}.' => 'Un lien de récupération de panier sera envoyé à {email}.', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'Un numéro de référence simple sera généré sur la base de ce format lors de la finalisation d’un panier et de sa conversion en commande. Par exemple {ex1}, ou
{ex2}. Le résultat de ce format doit être unique.', + 'A new download link has been sent to {email}' => 'Un nouveau lien de téléchargement a été envoyé à {email}.', + 'A new download link will be sent to {email}' => 'Un nouveau lien de téléchargement sera envoyé à {email}.', + 'A valid email is required to create a customer.' => 'Un courriel valide est requis pour créer un client.', + 'Accept' => 'Accepter', + 'Accepted' => 'Accepté', + 'Actions' => 'Actions', + 'Active Carts' => 'Paniers actifs', + 'Active subscriptions' => 'Abonnements actifs', + 'Active' => 'Actif', + 'Add Address' => 'Ajouter une adresse', + 'Add a coupon' => 'Ajouter un coupon', + 'Add a custom line item' => 'Ajouter un article personnalisé', + 'Add a line item' => 'Ajouter un article', + 'Add a product' => 'Ajouter un produit', + 'Add a variant' => 'Ajouter une variation', + 'Add an adjustment' => 'Ajouter un ajustement', + 'Add an item' => 'Ajouter un article', + 'Add an option' => 'Ajouter une option', + 'Add catalog price' => 'Ajouter un prix catalogue', + 'Add' => 'Ajouter', + 'Additional Actions' => 'Actions supplémentaires', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'Destinataires supplémentaires qui devraient recevoir ce courriel. Du code Twig peut être utilisé ici.', + 'Address 1' => 'Adresse 1', + 'Address 2' => 'Adresse 2', + 'Address 3' => 'Adresse 3', + 'Address Line 1' => 'Adresse ligne 1', + 'Address Line 2' => 'Adresse ligne 2', + 'Address Updated.' => 'Adresse mise à jour.', + 'Address copied to user.' => 'Adresse copiée pour l\'utilisateur.', + 'Address not found.' => 'Adresse non trouvée.', + 'Adjust Quantity' => 'Ajuster la quantité', + 'Adjust by' => 'Ajuster par', + 'Adjust price when included rate is disqualified?' => 'Ajuster le prix lorsque le taux de taxe inclus est disqualifié?', + 'Adjustments' => 'Ajustements', + 'Admin Notices' => 'Avis de l\'administrateur', + 'Administrative Area Code of Origin' => 'Code d\'origine Zone administrative ', + 'Advanced' => 'Avancé', + 'All Orders' => 'Toutes les commandes', + 'All Totals' => 'Tous les totaux', + 'All Transfers' => 'Tous les transferts', + 'All active subscriptions' => 'Tous les abonnements actifs', + 'All customers' => 'Tous les clients', + 'All products' => 'Tous les produits', + 'All variants must have a SKU.' => 'Toutes les variantes doivent avoir une UGS.', + 'All' => 'Tout', + 'Allow Checkout Without Payment' => 'Autoriser le passage à la caisse sans paiement', + 'Allow Empty Cart On Checkout' => 'Autoriser les paniers vides à la fin du processus de paiement', + 'Allow Partial Payment On Checkout' => 'Autoriser les paiements partiels à la sortie', + 'Allow out of stock purchases' => 'Permettre les achats de produits en rupture de stock', + 'Allow' => 'Autoriser', + 'Allowed Qty' => 'Quantité autorisée', + 'Alternative Phone' => 'Autre téléphone', + 'Amount' => 'Montant', + 'An ID must be provided' => 'Un identifiant doit être fourni', + 'An error occurred while generating this PDF.' => 'Une erreur est survenue lors la création de ce fichier PDF.', + 'Any' => 'Chaque', + 'Anywhere' => 'Partout', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => 'Voulez-vous vraiment archiver le plan d’abonnement « {name} »? Cela N’ANNULERA PAS les abonnements existants.', + 'Are you sure you want to capture this transaction?' => 'Êtes-vous certain(e) de vouloir saisir cette transaction?', + 'Are you sure you want to complete this order?' => 'Êtes-vous sûr de vouloir terminer cette commande?', + 'Are you sure you want to delete the selected orders?' => 'Voulez-vous vraiment supprimer les commandes sélectionnées?', + 'Are you sure you want to delete the selected product and its variants?' => 'Voulez-vous vraiment supprimer le produit sélectionné et ses variantes?', + 'Are you sure you want to delete this shipping rule?' => 'Êtes-vous sûr de vouloir supprimer cette règle d\'expédition?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => 'Êtes-vous certain(e) de vouloir effacer “{name}” et tout ses produits? Veuillez-vous assurer que vous avez une copie de sauvegarde de votre base de données avant de compléter cette action.', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => 'Voulez-vous vraiment supprimer « {name} »? Cela définira tous les articles avec ce statut comme n\'ayant aucun statut.', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'Voulez-vous vraiment marquer ce transfert comme étant en attente? Il apparaîtra comme entrant à la destination.', + 'Are you sure you want to overwrite the billing address?' => 'Êtes-vous sûr de vouloir écraser l\'adresse de facturation?', + 'Are you sure you want to overwrite the shipping address?' => 'Êtes-vous sûr de vouloir écraser l\'adresse d\'expédition?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'Voulez-vous vraiment supprimer ce magasin et tout ce qu\'il contient?', + 'Are you sure you want to refund this transaction?' => 'Êtes-vous certain(e) de vouloir rembourser cette transaction?', + 'Are you sure you want to remove this customer?' => 'Êtes-vous sûr de vouloir supprimer ce client?', + 'Are you sure you want to save this as a new shipping rule?' => 'Êtes-vous sûr de vouloir enregistrer cette règle comme nouvelle règle d\'expédition?', + 'Are you sure you want to send email: {name}?' => 'Êtes-vous sûr de vouloir envoyer le courriel : {name}?', + 'At least one site must be enabled for the product type.' => 'Au moins un site doit être activé pour le type de produit.', + 'Attempted Payments' => 'Tentatives de paiement', + 'Attention' => 'Attention', + 'Authorize Only (Manually Capture)' => 'Autoriser uniquement (collecter manuellement)', + 'Auto Set Cart Shipping Method Option' => 'Définir automatiquement l\'option de méthode d\'expédition du panier', + 'Auto Set New Cart Addresses' => 'Définir automatiquement les adresses des nouveaux paniers', + 'Auto Set Payment Source' => 'Source de paiement auto-définie', + 'Automatic SKU Format' => 'Format automatique d\'UGS', + 'Available Shipping Categories' => 'Catégories d’expédition disponibles', + 'Available Tax Categories' => 'Catégories de taxes disponibles', + 'Available for purchase' => 'Disponible à l’achat', + 'Available for purchase?' => 'Disponible à l’achat?', + 'Available inventory for "{description}" has gone below zero.' => 'Le stock disponible pour « {description} » est désormais inférieur à zéro.', + 'Available to Product Types' => 'Disponibles dans Types de produits', + 'Available' => 'Disponible', + 'Available?' => 'Disponible?', + 'Average Order Total' => 'Total de commande moyen', + 'Average' => 'Moyenne', + 'BCC’d Recipient' => 'Copie conforme invisible envoyée au destinataire', + 'Bad Request' => 'Requête incorrecte', + 'Bad address ID.' => 'Mauvais identifiant d\'adresse.', + 'Bad order ID.' => 'Identifiant de commande incorrect.', + 'Base Price' => 'Prix de base', + 'Base Promotional Price' => 'Prix promotionnel de base', + 'Base Rate' => 'Taux de base', + 'Base' => 'Base', + 'Bcc' => 'CCI', + 'Billing Address' => 'Adresse de facturation', + 'Billing Business Name' => 'Nom de l’entreprise de facturation', + 'Billing First Name' => 'Nom pour la facturation', + 'Billing Full Name' => 'Nom complet pour la facturation', + 'Billing Last Name' => 'Nom pour la facturation', + 'Billing address required.' => 'Adresse de facturation requise.', + 'Billing detail update URL' => 'URL de mise à jour des informations de facturation', + 'Billing issues' => 'Problèmes de facturation', + 'Billing' => 'Facturation', + 'Both (Line item price + Line item shipping costs)' => 'Les deux (prix de l\'article + frais de livraison de l\'article)', + 'Business ID' => 'Numéro d’entreprise', + 'Business Name' => 'Nom de l’entreprise', + 'Business Tax ID' => 'Numéro d’entreprise', + 'CC’d Recipient' => 'Destinataire en copie', + 'CVV' => 'CVV', + 'Can be used as an internal reference.' => 'Peut être utilisé comme référence interne.', + 'Can not complete payment for missing transaction.' => 'Impossible de terminer le paiement pour la transaction manquante.', + 'Can not create a new order' => 'Impossible de créer une nouvelle commande', + 'Can not find an order to pay.' => 'Impossible de trouver une commande à payer.', + 'Can not find enabled email.' => 'Impossible de trouver le courriel activé.', + 'Can not find order' => 'Impossible de trouver la commande', + 'Can not find order.' => 'Impossible de trouver la commande.', + 'Can not find the transaction to refund' => 'Impossible de trouver la transaction à rembourser', + 'Can not move between these inventory types.' => 'Il n\'est pas possible de passer d\'un type de stocks à l\'autre.', + 'Can not refund amount greater than the remaining amount' => 'Impossible de rembourser un montant supérieur au montant restant', + 'Cancel subscription' => 'Annuler l’abonnement', + 'Cancel with gateway now' => 'Annuler avec la passerelle maintenant', + 'Cancel' => 'Annuler', + 'Cancellation date' => 'Date d’annulation', + 'Cancellation' => 'Annulation', + 'Cannot switch plans for this subscription.' => 'Impossible de changer de plan pour cet abonnement.', + 'Can’t preview this email.' => 'Impossible de prévisualiser ce courriel.', + 'Capture payment' => 'Collecter le paiement', + 'Capture' => 'Saisir', + 'Card Holder' => 'Titulaire de la carte', + 'Card Number' => 'Numéro de carte', + 'Card' => 'Carte', + 'Cart Recovery Link' => 'Lien de récupération du panier', + 'Cart forgotten.' => 'Panier oublié.', + 'Cart updated.' => 'Panier mis à jour.', + 'Cart {number}' => 'Panier {number}', + 'Catalog Pricing Rule' => 'Règle de tarification du catalogue', + 'Catalog pricing rule description.' => 'Description de la règle de tarification du catalogue.', + 'Catalog pricing rule saved.' => 'Règle de tarification du catalogue sauvegardée.', + 'Catalog pricing rules deleted.' => 'Les règles de tarification du catalogue sont supprimées.', + 'Catalog pricing rules updated.' => 'Mise à jour des règles de tarification du catalogue.', + 'Categories Relationship Type' => 'Type de relation des catégories', + 'Categories' => 'Catégories', + 'Category Rate Overrides' => 'Remplacements du taux de catégorie', + 'Centimeters (cm)' => 'Centimètres (cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'La modification de cette valeur peut affecter votre capacité à rembourser les transactions existantes.', + 'Choose a color to represent the order’s status' => 'Choisissez une couleur pour représenter le statut de la commande', + 'Choose a new customer' => 'Choisir un nouveau client', + 'Choose adjustment values to include when calculating the product revenue total.' => 'Choisissez les valeurs d\'ajustement à inclure lors du calcul du total des revenus du produit.', + 'Choose the currency’s ISO code.' => 'Sélectionner le code ISO de la devise.', + 'Choose the destination inventory location for the existing on hand stock.' => 'Sélectionnez l\'emplacement de destination des stocks pour les stocks disponibles existants.', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'Choisir les sites pour lesquels ce type de produit sera disponible et configurer les paramètres spécifiques aux sites.', + 'City' => 'Ville', + 'Clear counter' => 'Réinitialiser le compteur', + 'Clear notices' => 'Effacer les avis', + 'Close' => 'Fermer', + 'Code' => 'Code', + 'Collated PDF' => 'PDF unique', + 'Color' => 'Couleur', + 'Commerce Products' => 'Produits de Commerce', + 'Commerce Settings' => 'Paramètres commerciaux', + 'Commerce Variants' => 'Variantes de Commerce', + 'Commerce email “{email}” could not be sent for order “{order}”.' => 'Le courriel Commerce « {email} » n’a pas été envoyé pour la commande « {order} ».', + 'Commerce order exports' => 'Exportations de commandes Commerce', + 'Commerce' => 'Commerce', + 'Committed' => 'Validé', + 'Completed Email' => 'Adresse courriel indiquée', + 'Completed' => 'Terminé', + 'Completing order failed.' => 'Échec de l\'exécution de la commande.', + 'Condition' => 'Condition', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'Les conditions sont comparées à un ordre avant d\'examiner les règles. Cette fonction est utile si vous souhaitez vérifier la disponibilité d\'une méthode à un stade précoce ou s\'il existe des conditions communes à toutes les règles relatives à cette méthode.', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'Les conditions sont comparées à la commande du client avant d\'examiner les règles. Cette fonction est utile si vous souhaitez vérifier la disponibilité d\'une méthode à un stade précoce ou s\'il existe des conditions communes à toutes les règles relatives à cette méthode.', + 'Conditions' => 'Conditions', + 'Contains Purchasables' => 'Contient des articles achetables', + 'Control Panel Settings' => 'Réglages du panneau de configuration', + 'Control panel' => 'Panneau de configuration', + 'Conversion Rate' => 'Taux de conversion', + 'Converted Price' => 'Prix converti', + 'Copied!' => 'Copié!', + 'Copy the URL' => 'Copier l\'URL', + 'Copy to {location}' => 'Copier vers {location}', + 'Copy' => 'Copier', + 'Costs' => 'Frais', + 'Could not archive gateway.' => 'Impossible d’archiver la passerelle.', + 'Could not cancel “{reference}”.' => 'Échec de l\'annulation de « {reference} ».', + 'Could not create the payment source.' => 'Impossible de créer la source de paiement.', + 'Could not delete shipping rule' => 'Impossible de supprimer la règle de livraison', + 'Could not delete shipping zone' => 'Impossible de supprimer la zone de livraison', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => 'Impossible de supprimer {count, number} {count, plural,one{catégorie} other{catégories}} d\'expédition.', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => 'Impossible de supprimer {count, number} {count, plural,one{mode} other{modes}} et règles d\'expédition.', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => 'Impossible de supprimer {count, number} {count, plural,one{catégorie} other{catégories}} de taxes.', + 'Could not find the email or template.' => 'Courriel ou modèle introuvable.', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => 'Impossible de marquer la commande {number} comme finalisée. L’enregistrement de la commande a échoué au cours de la finalisation avec des erreurs : {order}', + 'Could not reactivate “{reference}”.' => 'Échec de la réactivation de « {reference} ».', + 'Could not send email' => 'Impossible d\'envoyer le courriel', + 'Could not switch “{reference}” to “{plan}”.' => 'Impossible de passer « {reference} » à « {plan} ».', + 'Could not update orders address.' => 'Impossible de mettre à jour l\'adresse des commandes.', + 'Couldn’t archive Line Item Status.' => 'Impossible d\'archiver le statut de l\'article.', + 'Couldn’t archive Order Status.' => 'Impossible d\'archiver le statut de la commande.', + 'Couldn’t capture transaction.' => 'Impossible de collecter la transaction.', + 'Couldn’t capture transaction: {message}' => 'Impossible de collecter la transaction : {message}', + 'Couldn’t delete email.' => 'Impossible de supprimer le courriel.', + 'Couldn’t delete the payment source.' => 'Impossible de supprimer la source de paiement.', + 'Couldn’t get order.' => 'Impossible d\'obtenir la commande.', + 'Couldn’t recalculate order.' => 'Impossible de recalculer la commande.', + 'Couldn’t refund transaction.' => 'Impossible de rembourser la transaction.', + 'Couldn’t refund transaction: {message}' => 'Impossible de rembourser la transaction : {message}', + 'Couldn’t reorder Line Item Statuses.' => 'Impossible de réorganiser les statuts d\'article.', + 'Couldn’t reorder Order Statuses.' => 'Impossible de réorganiser les statuts des commandes.', + 'Couldn’t reorder PDFs.' => 'Impossible de réorganiser les PDF.', + 'Couldn’t reorder discounts.' => 'Impossible de réorganiser les remises.', + 'Couldn’t reorder gateways.' => 'Impossible de réorganiser les passerelles.', + 'Couldn’t reorder plans.' => 'Impossible de réorganiser les projets.', + 'Couldn’t reorder rules.' => 'Impossible de réorganiser les règles.', + 'Couldn’t reorder sale.' => 'Impossible de réorganiser la promotion.', + 'Couldn’t reorder sales.' => 'Impossible de réorganiser les promotions.', + 'Couldn’t reorder statuses.' => 'Impossible de réorganiser les statuts.', + 'Couldn’t reorder stores.' => 'Impossible de commander à nouveau dans les magasins.', + 'Couldn’t save PDF.' => 'Impossible d’enregistrer le PDF.', + 'Couldn’t save catalog pricing rule.' => 'Impossible d\'enregistrer la règle de tarification du catalogue.', + 'Couldn’t save currency.' => 'Impossible d’enregistrer la devise.', + 'Couldn’t save discount.' => 'Impossible d\'enregistrer le rabais.', + 'Couldn’t save email.' => 'Impossible d\'enregistrer le courriel.', + 'Couldn’t save gateway.' => 'Impossible d’enregistrer la passerelle.', + 'Couldn’t save inventory location.' => 'Impossible d\'enregistrer l\'emplacement des stocks.', + 'Couldn’t save line item status.' => 'Impossible d\'enregistrer le statut de l\'article.', + 'Couldn’t save order fields.' => 'Impossible d’enregistrer les champs de commande.', + 'Couldn’t save order status.' => 'Impossible d\'enregistrer le statut de commande.', + 'Couldn’t save order.' => 'Impossible d\'enregistrer la commande.', + 'Couldn’t save product type.' => 'Impossible d\'enregistrer le type de produit.', + 'Couldn’t save sale.' => 'Impossible d\'enregistrer la promotion.', + 'Couldn’t save settings.' => 'Impossible d’enregistrer les paramètres.', + 'Couldn’t save shipping category.' => 'Impossible d\'enregistrer cette catégorie de livraison.', + 'Couldn’t save shipping method.' => 'Impossible d\'enregistrer la méthode d\'expédition.', + 'Couldn’t save shipping rule.' => 'Impossible d’enregistrer la règle d\'expédition.', + 'Couldn’t save shipping zone.' => 'Impossible d\'enregistrer la zone de livraison.', + 'Couldn’t save store.' => 'Impossible d\'enregistrer la boutique.', + 'Couldn’t save subscription fields.' => 'Impossible d’enregistrer les champs d\'abonnement.', + 'Couldn’t save subscription plan.' => 'Impossible d’enregistrer le plan d’abonnement.', + 'Couldn’t save subscription.' => 'Impossible d’enregistrer l’abonnement.', + 'Couldn’t save tax category.' => 'Impossible d\'enregistrer la catégorie de taxe.', + 'Couldn’t save tax rate.' => 'Impossible d\'enregistrer le taux de taxe.', + 'Couldn’t save tax zone.' => 'Impossible d’enregistrer la zone de taxes.', + 'Couldn’t save transfer fields.' => 'Impossible d’enregistrer les champs de transfert.', + 'Couldn’t update catalog pricing rule statuses.' => 'Impossible de mettre à jour le statut des règles de tarification du catalogue.', + 'Couldn’t update status.' => 'Impossible de mettre à jour l\'état.', + 'Couldn’t updated sales status.' => 'Impossible de mettre à jour le statut des ventes.', + 'Country Code of Origin' => 'Code d\'origine Pays', + 'Country List' => 'Liste des pays', + 'Country not allowed.' => 'Pays non autorisé.', + 'Country' => 'Pays', + 'Coupon Code' => 'Code de coupon', + 'Coupon can not apply discount to this order due to address mismatch.' => 'Le coupon ne peut pas être utilisé pour appliquer une remise à cette commande, car l\'adresse ne correspond pas.', + 'Coupon can not apply discount to this order due to customer mismatch.' => 'Le coupon ne peut pas être utilisé pour appliquer une remise à cette commande, car le client ne correspond pas.', + 'Coupon can not apply discount to this order.' => 'Le coupon ne peut pas être utilisé pour appliquer une remise à cette commande.', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'Le code promotionnel « {code} » est déjà utilisé par la réduction « {name} ».', + 'Coupon codes cannot be blank.' => 'Les codes de coupons ne peuvent pas être vides.', + 'Coupon codes must be unique.' => 'Les codes de coupons doivent être uniques.', + 'Coupon format is required and must contain at least one `#`.' => 'Le format du coupon est requis et doit contenir au moins un « # ».', + 'Coupon not valid.' => 'Coupon non valide.', + 'Coupon removed: {explanation}' => 'Coupon supprimé : {explanation}', + 'Coupons' => 'Coupons', + 'Craft Commerce - Administration' => 'Craft Commerce - Administration', + 'Craft Commerce - Inventory' => 'Craft Commerce - Stocks', + 'Craft Commerce - Orders' => 'Craft Commerce - Commandes', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce - Type de produit - {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce - Abonnements', + 'Create a Discount' => 'Créer un rabais', + 'Create a Subscription Plan' => 'Créer un abonnement', + 'Create a new PDF' => 'Créer un nouveau PDF', + 'Create a new catalog pricing rule' => 'Créer une nouvelle règle de tarification pour le catalogue', + 'Create a new currency' => 'Créer une nouvelle devise', + 'Create a new email' => 'Créer un nouveau courriel', + 'Create a new gateway' => 'Créer une nouvelle passerelle', + 'Create a new line item status' => 'Créer un nouveau statut d\'article', + 'Create a new order status' => 'Créer un nouveau statut de commande', + 'Create a new product type' => 'Créer un nouveau type de produit', + 'Create a new sale' => 'Créer une nouvelle promotion', + 'Create a new shipping category' => 'Créer une nouvelle catégorie d’expédition', + 'Create a new shipping method' => 'Créer une nouvelle méthode d\'expédition', + 'Create a new shipping rule' => 'Créer une nouvelle règle de livraison', + 'Create a new tax category' => 'Créer une nouvelle catégorie de taxes', + 'Create a new tax rate' => 'Créer un nouveau taux de taxes', + 'Create a product type' => 'Créer un type de produit', + 'Create a shipping zone' => 'Créer une zone de livraison', + 'Create a tax zone' => 'Créer une zone de taxes', + 'Create catalog pricing rules' => 'Créer des règles de tarification pour les catalogues', + 'Create customer: “{email}”' => 'Créer le client : « {email} »', + 'Create discounts' => 'Créer des remises', + 'Create discount…' => 'Créer un rabais…', + 'Create rules that allow this discount to match the order.' => 'Créez des règles qui permettent à ce rabais de correspondre à la commande.', + 'Create rules that allow this discount to match the order’s billing address.' => 'Créez des règles qui permettent à ce rabais de correspondre à l\'adresse de facturation de la commande.', + 'Create rules that allow this discount to match the order’s customer.' => 'Créez des règles qui permettent à ce rabais de correspondre au client de la commande.', + 'Create rules that allow this discount to match the order’s shipping address.' => 'Créez des règles qui permettent à ce rabais de correspondre à l\'adresse d\'expédition de la commande.', + 'Create rules that allow this gateway to match the billing address.' => 'Créez des règles qui permettent à cette passerelle de faire correspondre l\'adresse de facturation.', + 'Create rules that allow this gateway to match the order.' => 'Créez des règles qui permettent à ce portail de correspondre à la commande.', + 'Create rules that allow this gateway to match the shipping address.' => 'Créez des règles qui permettent à cette passerelle de faire correspondre l\'adresse de livraison.', + 'Create sales' => 'Créer des promotions', + 'Create sale…' => 'Créer une vente…', + 'Created' => 'Créé', + 'Credit Card Payment Type' => 'Type de paiement par carte de crédit', + 'Currency Code' => 'Code de devise', + 'Currency saved.' => 'Devise enregistrée.', + 'Currency' => 'Devise', + 'Current' => 'Actuel', + 'Custom 1' => 'Personnalisé 1', + 'Custom 2' => 'Personnalisé 2', + 'Custom 3' => 'Personnalisé 3', + 'Custom 4' => 'Personnalisé 4', + 'Custom' => 'Personnalisé', + 'Customer Enabled?' => 'Activée pour les clients ?', + 'Customer ID is required.' => 'Un identifiant client est requis.', + 'Customer Note' => 'Note client', + 'Customer Notices' => 'Avis aux clients', + 'Customer data' => 'Données de clients', + 'Customer' => 'Client', + 'Damaged' => 'Endommagé', + 'Data shown might be outdated.' => 'Les données présentées peuvent être obsolètes.', + 'Date Authorized' => 'Date d\'autorisation', + 'Date Created' => 'Date de création', + 'Date First Paid' => 'Date du premier paiement', + 'Date Ordered' => 'Date de commande', + 'Date Paid' => 'Date de paiement', + 'Date Updated' => 'Date de mise à jour', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'Date à partir de laquelle la règle de tarification du catalogue sera active. Laisser vide pour une date de début illimitée', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'Date à partir de laquelle le rabais sera actif. Laisser vide pour une date de début illimitée', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'Date à partir de laquelle la vente sera active. Laisser vide pour une date de début illimitée', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'Date à laquelle la règle de tarification du catalogue sera terminée. Laisser vide pour une date de fin illimitée', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'Date à laquelle le rabais sera terminé. Laisser vide pour une date de fin illimitée', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'Date à laquelle la vente sera terminée. Laisser vide pour une date de fin illimitée', + 'Date' => 'Date', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'Par défaut - Permet au prix d\'être négatif si les rabais dépassent la valeur de la commande.', + 'Default Category' => 'Catégorie par défaut', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'Vue par défaut du panneau de contrôle de Commerce. Si l\'utilisateur n\'a pas la permission, il se rabattra sur un emplacement auquel il peut accéder.', + 'Default Order PDF' => 'PDF de commande par défaut', + 'Default Per Item Rate' => 'Taux par article par défaut', + 'Default Percentage Rate' => 'Pourcentage par défaut', + 'Default Status?' => 'État par défaut?', + 'Default View' => 'Vue par défaut', + 'Default Weight Rate' => 'Taux par poids par défaut', + 'Default Zone' => 'Zone par défaut ', + 'Default status?' => 'Statut par défaut?', + 'Default to this tax zone when no billing address is set' => 'Définir cette zone de taxes comme zone par défaut lorsqu’aucune adresse de facturation n’est spécifiée', + 'Default to this tax zone when no shipping address is set' => 'Zone de taxes par défaut si aucune adresse de livraison n’est définie', + 'Default variant updated.' => 'Mise à jour de la variante par défaut.', + 'Default' => 'Valeur par défaut', + 'Default?' => 'Par défaut?', + 'Delete catalog pricing rules' => 'Supprimer les règles de tarification du catalogue', + 'Delete discounts' => 'Supprimer les rabais', + 'Delete orders' => 'Supprimer les commandes', + 'Delete sales' => 'Supprimer les promotions', + 'Delete' => 'Supprimer', + 'Deleting the {location} location.' => 'Suppression de l\'emplacement {location}.', + 'Describe this rule.' => 'Décrivez cette règle.', + 'Describe this shipping zone.' => 'Décrivez cette zone d’expédition.', + 'Describe this tax zone.' => 'Décrivez cette zone de taxes.', + 'Description' => 'Description', + 'Destination Inventory Location' => 'Emplacement de destination des stocks', + 'Destination' => 'Destination', + 'Details' => 'Détails', + 'Dimension Unit' => 'Unités de dimensions', + 'Dimensions' => 'Dimensions', + 'Disabled' => 'Désactivé', + 'Disallow' => 'Ne pas autoriser', + 'Discount all line items' => 'Effectuer un rabais sur tous les articles', + 'Discount description.' => 'Description du rabais.', + 'Discount is not allowed for the order' => 'Aucun rabais n\'est autorisé pour cette commande', + 'Discount is out of date.' => 'Le rabais est échu.', + 'Discount saved.' => 'Rabais enregistré.', + 'Discount the matching items only' => 'Ne faire de rabais que sur les articles correspondants', + 'Discount use has reached its limit.' => 'L’utilisation du rabais a atteint sa limite.', + 'Discount' => 'Rabais', + 'Discounted Item Subtotal' => 'Sous-total de l\'article avec remise', + 'Discounted Items' => 'Articles en réduction', + 'Discounts deleted.' => 'Rabais supprimés.', + 'Discounts reordered.' => 'Rabais réorganisés.', + 'Discounts updated.' => 'Rabais mis à jour.', + 'Discounts' => 'Rabais', + 'Disqualify with valid business tax ID?' => 'Disqualifier avec un identifiant fiscal d\'entreprise valide?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'N’appliquez pas les ventes correspondantes ultérieures après avoir appliqué cette vente.', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => 'Ne pas appliquer ce taux si l\'adresse de la commande comporte l\'un des identifiants de taxe professionnelle valides sélectionnés.', + 'Do not attach a PDF to this email' => 'Ne pas attacher de PDF à ce courriel', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'Ne pas calculer de nouveau la commande (Numéro : {orderNumber}) si des erreurs sont présentes.', + 'Donation can not be zero.' => 'Un don ne peut être nul.', + 'Donation needs to be an amount.' => 'Le don doit être un montant.', + 'Donation settings saved.' => 'Paramètres de don enregistrés.', + 'Donation' => 'Don', + 'Donations' => 'Dons', + 'Done' => 'Terminé', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'Ne pas appliquer de rabais supplémentaires à cette commande si ce rabais est appliqué', + 'Download PDF' => 'Télécharger le PDF', + 'Download PDF…' => 'Télécharger le PDF…', + 'Download Type' => 'Type de téléchargement', + 'Download' => 'Télécharger', + 'Draft' => 'Brouillon', + 'Dummy gateway payment failed.' => 'Le paiement par la passerelle factice a échoué.', + 'Duplicate options exist' => 'Il y a des options en double', + 'Duration' => 'Durée', + 'EU VAT ID' => 'N° TVA DE L\'UE', + 'Edit address' => 'Modifier l’adresse', + 'Edit adjustments' => 'Modifier les ajustements', + 'Edit catalog pricing rules' => 'Modifier les règles de tarification du catalogue', + 'Edit discounts' => 'Modifier les rabais', + 'Edit options' => 'Modifier les options', + 'Edit orders' => 'Modifier les commandes', + 'Edit sales' => 'Modifier les promotions', + 'Edit' => 'Modifier', + 'Effect' => 'Effet', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'Soit (par défaut) - Le champ de relation est dans le champ achetable ou la catégorie', + 'Either way' => 'L\'un ou l\'autre', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'Erreur de génération de PDF de courriel pour le courriel « {email} ». Commande : « {order} ». Erreur de modèle PDF : « {message} » {file} : {line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'Le modèle au format PDF du courriel n’existe pas à l’emplacement « {templatePath} » pour le courriel « {email} ». Commande : « {order} ».', + 'Email Subject' => 'Objet du courriel', + 'Email error. No email address found for order. Order: “{order}”' => 'Erreur de courriel. Aucune adresse courriel n’a été trouvée pour la commande. Commande : « {order} »', + 'Email is not enabled.' => 'Les courriels ne sont pas activés.', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Comme il n’existe pas de modèle de courriel en texte clair à l’emplacement « {templatePath} », ce qui a entraîné « {templateParsedPath} » pour le courriel « {email} ». Commande : « {order} ».', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle de texte clair de courriel pour le courriel « {email} ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du chemin d\'accès au modèle de texte clair pour le courriel « {email} » dans « Chemin du modèle ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email required to make payments on a completed order.' => 'Courriel requis pour effectuer des paiements sur une commande finalisée.', + 'Email saved.' => 'Courriel enregistré.', + 'Email sent' => 'Courriel envoyé', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Le modèle de courriel n’existe pas à l’emplacement « {templatePath} », ce qui a entraîné « {templateParsedPath} » pour le courriel « {email} ». Commande : « {order} ».', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle de courriel personnalisé « {email} » dans « À : ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle de courriel pour le courriel {email} dans « Cci : ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle de courriel pour le courriel {email} dans « CC : ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle de courriel pour le courriel {email} dans « Répondre à : ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle de courriel pour le courriel « {email} » dans « Objet : ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle de courriel pour le « {email} ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle de courriel pour le courriel « {email} » dans « Chemin du modèle ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email unavailable.' => 'Courriel non disponible.', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => 'Le courriel « {email} » n\'a pu être envoyé pour la commande « {order} ». Erreur : {error} {file} : {line}', + 'Email “{email}” for order {order} was cancelled.' => 'Le courriel « {email} » pour la commande « {order} » a été annulé.', + 'Email' => 'Courriel', + 'Emails' => 'Courriels', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'Activer si ce taux doit être intégré au prix de l\'objet imposable au lieu d\'ajouter un coût à la commande.', + 'Enable structure for products of this type' => 'Activer la structure pour les produits de ce type', + 'Enable this discount' => 'Activer ce rabais', + 'Enable this rule' => 'Activer cette règle', + 'Enable this sale' => 'Activer cette vente', + 'Enable this shipping method on the front end' => 'Activer cette méthode d’expédition à l’accueil', + 'Enable this shipping rule' => 'Activer cette règle d’expédition', + 'Enable this tax rate' => 'Activer ce taux de taxe', + 'Enabled for customers to select during checkout?' => 'Possibilité pour les clients de sélectionner au moment de passer à la caisse?', + 'Enabled for customers to select?' => 'Activé pour permettre la sélection par les clients?', + 'Enabled' => 'Activé', + 'Enabled?' => 'Activé?', + 'End Date' => 'Date de fin', + 'Enter SKU' => 'Entrer l\'UGS', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'Saisir un nom convivial pour ce taux d\'imposition, qui sera utilisé dans le panneau de configuration.', + 'Enter a percentage like {ex1} or {ex2}.' => 'Entrer un pourcentage comme {ex1} ou {ex2}.', + 'Enter coupon code' => 'Entrer le code du coupon', + 'Enter reference' => 'Entrer la référence', + 'Error refunding transaction: {transactionHash}' => 'Erreur lors du remboursement de la transaction : {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'Chaque nouveau point de vente doit être affecté à au moins un site.', + 'Everywhere' => 'Partout', + 'Example' => 'Exemple', + 'Exclude this discount for products that are already on promotion' => 'Exclure cette remise pour les produits déjà en promotion', + 'Expired Link' => 'Lien expiré', + 'Expired' => 'Expiré', + 'Expiry Date' => 'Date d’expiration', + 'Expiry date' => 'Date d’expiration', + 'Expiry' => 'Expiration', + 'Failed to receive transfer: {error}' => 'Échec de la réception du transfert : {error}', + 'Failed to send email. Please try again.' => 'Échec de l\'envoi du courriel. Veuillez réessayer.', + 'Failed to start' => 'Échec du démarrage', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => 'Échec de la mise à jour {num, plural, =1{du statut de la commande} other{des statuts des commandes}}.', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => 'Échec de la mise à jour du statut {num, plural, =1{de la commande} other{des commandes}}.', + 'Feet (ft)' => 'Pieds (pi)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'Les conditions de filtrage qui définissent à quelles commandes cette règle s’applique. Écrire 0 pour ignorer cette condition.', + 'First Name' => 'Prénom', + 'Flat Amount Off Order' => 'Montant fixe de remise sur la commande', + 'Flat Order Discount Amount Off' => 'Montant du rabais forfaitaire sur la commande', + 'Free Order Payment Strategy' => 'Stratégie de paiement des commandes gratuites', + 'Free Shipping' => 'Expédition gratuite', + 'Free orders are processed by the payment gateway' => 'Les commandes gratuites sont traitées à travers la passerelle de paiement', + 'Free orders complete immediately' => 'Les commandes gratuites s\'exécutent immédiatement', + 'Free shipping can only be for whole order or matching items, not both.' => 'La livraison gratuite ne peut concerner que l\'ensemble de la commande ou les articles correspondants, pas les deux.', + 'From Name' => 'Nom de l’expéditeur', + 'Fulfill' => 'Réaliser', + 'Fulfilled' => 'Réalisé', + 'Fulfillment' => 'Réalisation', + 'Full Name' => 'Nom complet', + 'Gateway Code' => 'Code de la passerelle', + 'Gateway Message' => 'Message de passerelle', + 'Gateway Reference' => 'Référence de la passerelle', + 'Gateway Response' => 'Réponse de la passerelle', + 'Gateway doesn’t support authorize' => 'La passerelle ne prend pas en charge l’autorisation', + 'Gateway doesn’t support partial refunds.' => 'La passerelle ne prend pas en charge les remboursements partiels.', + 'Gateway doesn’t support purchase' => 'La passerelle de paiement ne supporte pas les achats', + 'Gateway doesn’t support refunds.' => 'La passerelle ne prend pas en charge les remboursements.', + 'Gateway saved.' => 'Passerelle enregistrée.', + 'Gateway' => 'Passerelle', + 'Gateways reordered.' => 'Passerelles réorganisées.', + 'Gateways' => 'Passerelles', + 'General Settings' => 'Paramètres généraux', + 'General' => 'Général', + 'Generate' => 'Générer', + 'Generated Coupon Format' => 'Format des coupons générés', + 'Grams (g)' => 'Grammes (g)', + 'Groups for which this sale will be applicable to.' => 'Groupes auxquels cette promotion s’appliquera.', + 'HTML Email Template Path' => 'Chemin du modèle de courriel HTML', + 'Handle' => 'Identifiant', + 'Harmonized System Code' => 'Code du système harmonisé', + 'Has Admin Notices' => 'Contient des avis de l\'administrateur', + 'Has Emails?' => 'A des courriels?', + 'Has Free Shipping' => 'Possède la livraison gratuite', + 'Has Orders' => 'Comprend des commandes', + 'Has Purchasable' => 'Comprend des achetables', + 'Has Variants?' => 'Possède des variantes?', + 'Height ({unit})' => 'Hauteur ({unit})', + 'Height' => 'Hauteur', + 'Hide snapshot' => 'Masquer l\'instantané', + 'History' => 'Historique', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'Combien de temps (en secondes) un lien de téléchargement PDF doit rester valide avant d\'expirer. La valeur par défaut est 86 400 (24 heures).', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => 'Combien de fois une adresse courriel peut utiliser ce rabais. Ceci est applicable à toutes les commandes précédentes, par des invités ou des utilisateurs. Indiquez zéro pour une utilisation illimitée par invités ou utilisateurs.', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => 'Combien de fois un utilisateur est autorisé à utiliser cette remise. Si cette valeur est différente de zéro, la remise ne sera disponible que pour les utilisateurs connectés.', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'Le nombre de fois maximum que cette réduction peut être utilisée par des invités ou des utilisateurs inscrits. Mettez zéro pour une utilisation illimitée.', + 'How products should be labeled within the control panel.' => 'Comment les produits doivent être étiquetés dans le panneau de contrôle.', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'La relation entre les biens à acheter et les catégories, qui détermine les articles correspondants. Voir [Terminologie des relations]({link}).', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'Comment ce produit sera-t-il décrit dans une ligne d’article dans une commande. Vous pouvez inclure des étiquettes qui indiquent les propriétés, telles que {ex1} ou {ex2}', + 'How this shipping method will be referred to in templates and forms.' => 'Comment s’appellera cette méthode dans les modèles et les formulaires.', + 'How variants should be labeled within the control panel.' => 'Comment les variantes doivent être étiquetées dans le panneau de contrôle.', + 'How you’ll refer to this PDF in the templates.' => 'La façon dont vous allez faire référence à ce PDF dans les modèles.', + 'How you’ll refer to this product type in the templates.' => 'Comment s’appellera ce type de produit dans les modèles.', + 'How you’ll refer to this shipping category in the templates.' => 'Comment vous faites référence à cette catégorie d’expédition dans les modèles.', + 'How you’ll refer to this status in the templates.' => 'Comment s’appellera cet état dans les modèles', + 'How you’ll refer to this subscription plan in the templates.' => 'La façon dont vous désignerez ce plan d’abonnement dans les modèles.', + 'How you’ll refer to this tax category in the templates.' => 'Comment s’appellera cette catégorie de taxes dans les modèles.', + 'ID' => 'ID', + 'IP Address' => 'Adresse IP', + 'If disabled, this PDF will not be available or sent with emails.' => 'S\'il est désactivé, ce PDF ne sera pas disponible ou envoyé avec les courriels.', + 'If disabled, this email will not send.' => 'S’il est désactivé, ce courriel ne sera pas envoyé.', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => 'Si cette option est activée et que ce tarif ne correspond pas à la commande, le taux sera supprimé du prix de l\'article dans le panier.', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'Si cette valeur est réglée à « Autorisation seulement », il faut manuellement saisir les paiements avant que les fonds ne soient transférés à votre compte. La passerelle a besoin d’accepter l’option sélectionnée.', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => 'Si vous choisissez le pourcentage pour qu\'il corresponde au « rabais sur l\'article en promotion », cela inclura le « montant par article » ainsi que tout autre rabais appliqué avant celui-ci.', + 'Ignore Promotions?' => 'Ignorer les promotions?', + 'Ignore previous matching sales if this sale matches.' => 'Ignorez les ventes correspondantes précédentes si cette vente correspond.', + 'Ignore promotional prices when this discount is applied to matching line items' => 'Ignorer les prix promotionnels lorsque cette remise est appliquée à des postes correspondants.', + 'Inactive Carts' => 'Paniers inactifs', + 'Inches (in)' => 'Pouces (po)', + 'Include built-in line item tax.' => 'Inclure la taxe intégrée sur le type d\'article.', + 'Include in price?' => 'Inclure dans le prix?', + 'Include line item discounts.' => 'Inclure les rabais par type d\'article.', + 'Include line item shipping costs.' => 'Inclure les coûts d\'envoi par type d\'article.', + 'Include separate line item tax.' => 'Inclure une ligne distincte pour la taxe par type d\'article.', + 'Included in price?' => 'Inclus dans le prix?', + 'Included' => 'Inclus', + 'Incoming transfer from Transfer ID: ' => 'Transfert entrant à partir de l\'ID de transfert : ', + 'Incoming' => 'À venir', + 'Info' => 'Infos', + 'Information linked?' => 'Des renseignements sont-ils associés?', + 'Information' => 'Informations', + 'Invalid JSON' => 'JSON invalide', + 'Invalid Order ID' => 'ID de commande invalide', + 'Invalid VAT ID.' => 'ID TVA invalide.', + 'Invalid condition syntax' => 'Syntaxe conditionnelle invalide', + 'Invalid email.' => 'L\'adresse courriel est invalide.', + 'Invalid formula syntax' => 'Syntaxe de formule non valide', + 'Invalid gateway: {value}' => 'Passerelle non valide : {value}', + 'Invalid inventory movements.' => 'Mouvements des stocks non valides.', + 'Invalid order condition syntax.' => 'Syntaxe conditionnelle de commande invalide.', + 'Invalid payment or order. Please review.' => 'Paiement ou commande non valide. Veuillez vérifier votre saisie.', + 'Invalid payment source ID: {value}' => 'Identifiant de la source de paiement non valide : {value}', + 'Invalid store.' => 'Magasin non valide.', + 'Invalid user.' => 'Utilisateur non valide.', + 'Inventory Item' => 'Article d\'inventaire', + 'Inventory Location' => 'Emplacement des stocks', + 'Inventory Locations' => 'Emplacements des stocks', + 'Inventory Tracked' => 'Stocks tracés', + 'Inventory Transfers' => 'Transferts d\'inventaire', + 'Inventory could not be set.' => 'Les stocks n\'ont pas pu être définis.', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => 'L\'emplacement des stocks a validé des stocks, la ou les commandes doivent d\'abord être réalisées.', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => 'Si l\'emplacement des stocks a des stocks entrants, le(s) transfert(s) doit(vent) d\'abord être effectué(s).', + 'Inventory location is already deactivated.' => 'L\'emplacement des stocks est déjà désactivé.', + 'Inventory location saved.' => 'Emplacement des stocks enregistré.', + 'Inventory locations not saved.' => 'Emplacements des stocks non enregistrés.', + 'Inventory movement could not be saved.' => 'Le mouvement de stocks n\'a pas pu être enregistré.', + 'Inventory movement saved.' => 'Mouvement de stocks enregistré.', + 'Inventory updated.' => 'Stocks mis à jour.', + 'Inventory was not updated.' => 'Les stocks n\'ont pas été mis à jour.', + 'Inventory' => 'Stocks', + 'Invoice amount' => 'Montant de la facture', + 'Invoice date' => 'Date de facturation', + 'Is Promotable' => 'Peut être promu', + 'Is Promotional Price?' => 'Est-ce un prix promotionnel?', + 'Is Shippable' => 'Peut être expédié', + 'Is Taxable' => 'Peut être taxé', + 'Item Rates' => 'Taux de l’item', + 'Item Subtotal' => 'Sous-total de l\'article', + 'Item Total' => 'Total de l\'article', + 'Item' => 'Article', + 'Items' => 'Articles', + 'Kilograms (kg)' => 'Kilogrammes (kg)', + 'Label' => 'Étiquette', + 'Landscape' => 'Landscape', + 'Language' => 'Langue', + 'Last Name' => 'Nom de famille', + 'Last Updated' => 'Dernière mise à jour', + 'Leave a category rate override blank to use the rate from above.' => 'Laissez un taux de catégorie vide pour utiliser le taux ci-dessus.', + 'Leave blank for unlimited uses.' => 'Laisser vide pour une utilisation illimitée.', + 'Leave blank if products don’t have URLs' => 'Laisser vide si les produits n’ont pas d’URL', + 'Leave gateway subscription as-is' => 'Conserver l\'abonnement à la passerelle tel quel', + 'Length ({unit})' => 'Longueur ({unit})', + 'Length' => 'Longueur', + 'Let each product choose which sites it should be saved to' => 'Laisser chaque produit choisir les sites sur lesquels il doit être enregistré', + 'Limit which orders this discount applies to based on its line items.' => 'Limiter les commandes auxquelles ce rabais s\'applique en fonction de leurs articles.', + 'Limit which purchasables this sale applies to.' => 'Limiter les produits achetables auxquels cette promotion s\'applique.', + 'Limit' => 'Limite', + 'Line Item Statuses' => 'Statuts de l\'article', + 'Line Item' => 'Article', + 'Line Items' => 'Articles', + 'Line item price (minus discounts)' => 'Prix de l\'article (moins les remises)', + 'Line item shipping cost' => 'Frais de livraison de l’article', + 'Line item statuses reordered.' => 'Articles réorganisés.', + 'Link Duration' => 'Durée du lien', + 'Link Sent' => 'Lien envoyé', + 'Link to a product' => 'Lien vers un produit', + 'Link to a variant' => 'Lier à une variante', + 'Link' => 'Lien', + 'Live' => 'En direct', + 'Location' => 'Emplacement', + 'Locations that should be available for previewing products in this product type.' => 'Emplacements à proposer pour la prévisualisation des produits de ce type de produit.', + 'MM' => 'MM', + 'Make a payment' => 'Effectuer un paiement', + 'Make this the primary store' => 'En faire le magasin principal', + 'Manage Inventory' => 'Gérer les stocks', + 'Manage donation settings' => 'Gérer les paramètres de don', + 'Manage general store settings' => 'Gérer les paramètres généraux du magasin', + 'Manage inventory locations' => 'Gérer les emplacements des stocks', + 'Manage inventory stock levels' => 'Gérer les niveaux de stocks', + 'Manage inventory transfers' => 'Gérer les transferts d\'inventaire', + 'Manage orders' => 'Gérer les commandes', + 'Manage payment currencies' => 'Gérer les devises de paiement', + 'Manage promotions' => 'Gérer des promotions', + 'Manage shipping' => 'Gérer l\'expédition', + 'Manage store settings' => 'Gérer les paramètres du magasin', + 'Manage subscription plans' => 'Gérer les abonnements', + 'Manage subscription' => 'Gérer l’abonnement', + 'Manage subscriptions' => 'Gérer les abonnements', + 'Manage taxes' => 'Gérer les taxes', + 'Manage' => 'Gérer', + 'Mark as Pending' => 'Marquer comme en attente', + 'Mark as completed' => 'Marquer comme terminé', + 'Match Billing Address' => 'Faire correspondre l\'adresse de facturation', + 'Match Customer' => 'Faire correspondre le client', + 'Match Order' => 'Faire correspondre la commande', + 'Match Orders' => 'Faire correspondre les commandes', + 'Match Product' => 'Faire correspondre le produit', + 'Match Purchasable' => 'Faire correspondre achetables', + 'Match Shipping Address' => 'Faire correspondre l\'adresse de livraison', + 'Match Variant' => 'Faire correspondre la variante', + 'Matching Items' => 'Articles correspondants', + 'Max Qty' => 'Qté max.', + 'Max Uses' => 'Nombre max d\'utilisations', + 'Max Variants' => 'Variantes max.', + 'Max quantity must greater than min.' => 'La quantité maximale doit être supérieure à la quantité minimale.', + 'Maximum Purchase Quantity' => 'Quantité d’achat maximum', + 'Maximum Total Shipping Cost' => 'Frais d’expédition totaux maximum', + 'Maximum allowed quantity' => 'Quantité maximale autorisée', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'Le nombre maximum d’éléments correspondants qui peuvent être commandés pour que cette réduction s’applique. Une valeur zéro ici évitera cette condition.', + 'Maximum order quantity for this item is {num}.' => 'La quantité maximale pouvant être commandée pour cet article est {num}.', + 'Message' => 'Message', + 'Meters (m)' => 'Mètres (m)', + 'Millimeters (mm)' => 'Millimètres (mm)', + 'Min Qty' => 'Qté min.', + 'Min quantity must be less than max.' => 'La quantité minimale doit être inférieure à la quantité maximale.', + 'Minimum Purchase Quantity' => 'Quantité d’achat minimale', + 'Minimum Total Price Strategy' => 'Stratégie de prix minimum', + 'Minimum Total Shipping Cost' => 'Coût d’expédition minimum total', + 'Minimum allowed quantity' => 'Quantité minimale autorisée', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'Nombre minimum d’articles correspondants qui doivent être commandés pour que cette réduction s’applique.', + 'Minimum order quantity for this item is {num}.' => 'La quantité minimale devant être commandée pour cet article est {num}.', + 'Missing Gateway' => 'Passerelle manquante', + 'Missing a default inventory location.' => 'Il manque un emplacement de stocks par défaut.', + 'Move Inventory' => 'Déplacer les stocks', + 'Move To' => 'Déplacer vers', + 'Move {qty} from {fromType} to {toType}' => 'Déplacer {qty} de {fromType} vers {toType}', + 'Move' => 'Déplacer', + 'Movement from deactivated inventory location' => 'Mouvement à partir d\'un lieu de stocks désactivé', + 'Movement' => 'Mouvement', + 'Must have at least one variant.' => 'Doit avoir au moins une variante.', + 'Name Field' => 'Champ de nom', + 'Name' => 'Nom', + 'New Customer' => 'Nouveau client', + 'New Customers' => 'Nouveaux clients', + 'New Order' => 'Nouvelle commande', + 'New PDF' => 'Nouveau PDF', + 'New address' => 'Nouvelle adresse', + 'New catalog pricing rule' => 'Nouvelle règle de tarification des catalogues', + 'New currency' => 'Nouvelle devise', + 'New discount' => 'Nouveau rabais', + 'New email' => 'Nouveau courriel', + 'New gateway' => 'Nouvelle passerelle', + 'New line item status' => 'Nouveau statut d\'article', + 'New line items get this status by default when the order is completed' => 'Les nouveaux articles obtiennent ce statut par défaut lorsque la commande est terminée', + 'New location' => 'Nouvel emplacement', + 'New order status' => 'Nouvel état de commande', + 'New orders get this status by default' => 'Les nouvelles commandes reçoivent cet état par défaut', + 'New product type' => 'Nouveau type de produit', + 'New product' => 'Nouveau produit', + 'New product, choose a type' => 'Nouveau produit, choisir un type', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => 'Les nouveaux produits passent par défaut à la première catégorie de taxe disponible. Si aucune n\'est disponible, cette catégorie sera utilisée.', + 'New sale' => 'Nouvelle vente', + 'New shipping category' => 'Nouvelle catégorie d’expédition', + 'New shipping method' => 'Nouvelle méthode d’expédition', + 'New shipping rule' => 'Nouvelle règle d’expédition', + 'New shipping zone' => 'Nouvelle zone d’expédition', + 'New subscription plan' => 'Nouveau plan d’abonnement', + 'New tax category' => 'Nouvelle catégorie de taxes', + 'New tax rate' => 'Nouveau taux de taxes', + 'New tax zone' => 'Nouvelle zone de taxes', + 'New transfer' => 'Nouveau transfert', + 'New {productType} product' => 'Nouveau produit {productType}', + 'New' => 'Nouveau', + 'Next payment' => 'Prochain paiement', + 'No Address' => 'Pas d\adresse', + 'No PDFs exist yet.' => 'Il n\'existe pour l\'instant aucun PDF.', + 'No access given to any specific store management features.' => 'Aucun accès n\'est donné à des fonctions spécifiques de gestion de magasin.', + 'No additional payment currencies exist yet.' => 'Il n’existe plus aucune monnaie de paiement supplémentaire.', + 'No address' => 'Aucune adresse', + 'No billing address' => 'Aucune adresse de facturation', + 'No catalog pricing rule exists with the ID “{id}”' => 'Aucune règle de tarification du catalogue n\'existe avec l\'ID « {id} »', + 'No catalog pricing rules exist yet.' => 'Il n\'existe pas encore de règles de tarification pour les catalogues.', + 'No currency exists with the ID “{id}”' => 'Il n\'existe aucune devise avec l’identifiant « {id} »', + 'No customer email address exists on this cart.' => 'Aucune adresse courriel de client n’existe dans ce panier.', + 'No description' => 'Aucune description', + 'No discount exists with the ID “{id}”' => 'Il n’existe aucun rabais avec l’identifiant « {id} »', + 'No discounts exist yet.' => 'Aucun rabais n’a été créé.', + 'No donation amount supplied.' => 'Aucun montant de don fourni.', + 'No emails exist yet.' => 'Aucun courriel n’a été créé.', + 'No inventory changes made.' => 'Aucune modification de stocks n\'a été effectuée.', + 'No inventory found.' => 'Aucun stock n\'a été trouvé.', + 'No inventory movements made.' => 'Aucun mouvement de stocks n\'a été effectué.', + 'No inventory transactions for this location.' => 'Aucune transaction de stocks pour ce site.', + 'No new customer selected.' => 'Aucun nouveau client sélectionné.', + 'No order history exists with the ID “{id}”' => 'Il n’existe aucun historique de commande avec l’identifiant « {id} »', + 'No order status history items will exist until the cart becomes an order.' => 'Aucun élément n’existe dans l’historique des statuts de la commande jusqu’à ce que le panier soit converti en commande.', + 'No payment source exists with the ID “{id}”' => 'Il n\'existe aucune source de paiement avec l’identifiant « {id} »', + 'No private Note.' => 'Aucune note privée.', + 'No product available.' => 'Aucun produit disponible.', + 'No product types exist yet.' => 'Aucun type de produit n’a été créé.', + 'No purchasable available.' => 'Aucun achetable disponible.', + 'No sale exists with the ID “{id}”' => 'Il n’existe aucune promotion avec l’identifiant « {id} »', + 'No sales exist yet.' => 'Aucune vente n’a été créée.', + 'No shipping address' => 'Aucune adresse de livraison', + 'No shipping category exists with the ID “{id}”' => 'Il n\'existe aucune catégorie de livraison possédant l\'identifiant « {id} »', + 'No shipping method exists with the ID “{id}”' => 'Il n\'existe aucune méthode d\'expédition avec l\'identifiant « {id} »', + 'No shipping rule exists with the ID “{id}”' => 'Il n\'existe pas de règle de livraison avec l\'identifiant « {id} »', + 'No shipping rules exist yet.' => 'Aucune règle d’expédition n’a été créée.', + 'No shipping zone exists with the ID “{id}”' => 'Aucune zone de livraison avec l\'identifiant « {id} »', + 'No stats available.' => 'Aucune statistique disponible.', + 'No subscription plan exists with the ID “{id}”' => 'Il n\'existe aucun d’abonnement avec l’identifiant « {id} »', + 'No subscription plans exist yet.' => 'Aucun plan d’abonnement n’existe encore.', + 'No tax category exists with the ID “{id}”' => 'Il n’existe aucune catégorie de taxes avec l’identifiant « {id} »', + 'No tax rate exists with the ID “{id}”' => 'Il n\'existe aucun taux de taxe avec l\'identifiant « {id} »', + 'No tax zone exists with the ID “{id}”' => 'Il n\'existe aucune zone de taxe avec l\'identifiant « {id} »', + 'No transactions exist.' => 'Aucune transaction existante.', + 'No user authenticated.' => 'Aucun utilisateur authentifié.', + 'No' => 'Non', + 'None on hand' => 'Aucun à disposition', + 'None' => 'Aucun', + 'Not a valid address type' => 'N\'est pas un type d\'adresse valide', + 'Not a valid credit card number.' => 'Numéro de carte non valide.', + 'Not all SKUs are unique.' => 'Toutes les UGS ne sont pas uniques.', + 'Note' => 'Remarque', + 'Notes' => 'Notes', + 'Number of Coupons' => 'Nombre de coupons', + 'Number' => 'Numéro', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => 'Parmi les sites activés ci-dessus, sur quels sites les produits de ce type de produit doivent-ils être enregistrés?', + 'On Hand' => 'Sur place', + 'Only allow this gateway to be used for zero value orders?' => 'Permettre uniquement l’utilisation de cette passerelle pour les commandes dont la valeur est zéro?', + 'Only match certain purchasables…' => 'Ne faire correspondre qu\'à certains produits achetables…', + 'Only match purchasables related to…' => 'Ne faire correspondre que les produits achetables liés à…', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => 'Seules les commandes ayant les états de commande suivants seront incluses. Laissez vide pour inclure tous les états.', + 'Only save product to the site they were created in' => 'N’enregistrer les produits que sur le site où ils ont été créés', + 'Options' => 'Options', + 'Order Condition Formula' => 'Formule de la condition de commande', + 'Order Description Format' => 'Format de la description de la commande', + 'Order Details' => 'Détails de la commande', + 'Order Fields' => 'Champs de la commande', + 'Order PDF Download Link' => 'Lien de téléchargement du PDF de la commande', + 'Order PDF Filename Format' => 'Format du nom de fichier du PDF de commande', + 'Order Reference Number Format' => 'Format du numéro de référence de la commande', + 'Order Settings' => 'Paramètres de la commande', + 'Order Site' => 'Site de commande', + 'Order Status description.' => 'Description du statut de la commande.', + 'Order Status' => 'État de la commande', + 'Order Statuses' => 'États des commandes', + 'Order can not be empty.' => 'La commande ne peut pas être vide.', + 'Order count' => 'Nombre de commandes', + 'Order customer data removed.' => 'Données des clients supprimées des commandes.', + 'Order deleted.' => 'Commande supprimée.', + 'Order fields saved.' => 'Champs de commande enregistrés.', + 'Order not found.' => 'Commande non trouvée.', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => 'Le solde de paiement de la commande est {outstandingBalanceAsCurrency}. Il s\'agit du montant maximum facturé.', + 'Order recalculated.' => 'Commande recalculée.', + 'Order status saved.' => 'Statut de commande enregistré.', + 'Order statuses reordered.' => 'Statuts des commandes réorganisés.', + 'Order total shipping cost' => 'Frais de livraison totaux de la commande', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => 'Total taxable de la commande (sous-total des articles + total des rabais + total des frais de livraison)', + 'Order' => 'Commande', + 'Orders (Legacy)' => 'Commandes (Legacy)', + 'Orders deleted.' => 'Commandes supprimées.', + 'Orders not restored.' => 'Commandes non restaurées.', + 'Orders restored.' => 'Commandes restaurées.', + 'Orders' => 'Commandes', + 'Organization Name' => 'Nom de l\'organisation', + 'Organization Tax ID' => 'ID fiscal de l\'organisation', + 'Origin and destination cannot be the same.' => 'L\'origine et la destination ne peuvent pas être les mêmes.', + 'Origin' => 'Origine', + 'Original Price' => 'Prix d’origine', + 'Original price' => 'Prix original', + 'Original promotional price' => 'Prix promotionnel original', + 'Other Languages' => 'Autres langues', + 'Other countries' => 'Autres pays', + 'Outgoing transfer from Transfer ID: ' => 'Transfert sortant à partir de l\'ID de transfert : ', + 'Overpaid' => 'Surpayé', + 'Overrides previous?' => 'Remplace le précédent?', + 'PDF Attachment' => 'Fichier PDF joint', + 'PDF Template Path' => 'Chemin du modèle au format PDF', + 'PDF saved.' => 'PDF enregistré.', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'PDF et courriels', + 'PDFs' => 'Fichiers PDF', + 'Paid Amount' => 'Montant payé', + 'Paid Status' => 'État du paiement', + 'Paid' => 'Payé', + 'Paper Orientation' => 'Orientation du papier', + 'Paper Size' => 'Format du papier', + 'Partial payment not allowed.' => 'Paiement partiel non autorisé.', + 'Partial' => 'Partiel', + 'Past year' => 'L\'année dernière', + 'Past {num} days' => '{num} derniers jours', + 'Pay {amount} of {currency} on the order.' => 'Payer {amount} {currency} sur la commande.', + 'Pay' => 'Payer', + 'Payment Amount' => 'Montant du paiement', + 'Payment Currencies' => 'Devises de paiement', + 'Payment Gateway' => 'Portail de paiement', + 'Payment Method' => 'Méthode de paiement', + 'Payment error: {message}' => 'Erreur de paiement : {message}', + 'Payment method issue' => 'Problème de moyen de paiement', + 'Payment source created.' => 'Source de paiement créée.', + 'Payment source deleted.' => 'Source de paiement supprimée.', + 'Payments' => 'Paiements', + 'Pending' => 'En cours', + 'Per Email Address Discount Limit' => 'Limite de rabais par adresse courriel', + 'Per Item Amount Off' => 'Montant de la remise par article', + 'Per Item Discount' => 'Rabais par article', + 'Per Item Percentage Off' => 'Montant de remise par article', + 'Per Item Rate' => 'Taux par article', + 'Per User Discount Limit' => 'Limite de rabais par utilisateur', + 'Percentage Rate' => 'Taux en pourcentage', + 'Phone (Alt)' => 'Téléphone (autre)', + 'Phone' => 'Numéro de téléphone', + 'Pick a plan' => 'Choisir un plan', + 'Plain Text Email Template Path' => 'Chemin du modèle de courriel de texte brut', + 'Plan' => 'Projet', + 'Plans reordered.' => 'Plans réorganisés.', + 'Portrait' => 'Portrait', + 'Post Date' => 'Date de publication', + 'Postal Code Formula' => 'Formule du code postal', + 'Pounds (lb)' => 'Livres (lb)', + 'Preview' => 'Aperçu', + 'Previous Status' => 'État précédent', + 'Price' => 'Prix', + 'Prices' => 'Prix', + 'Pricing Rules' => 'Règles de tarification', + 'Pricing jobs are currently running.' => 'Des travaux de tarification sont actuellement en cours.', + 'Pricing' => 'Tarification', + 'Primary Billing Address' => 'Adresse de facturation principale', + 'Primary Shipping Address' => 'Adresse de livraison principale', + 'Primary payment source updated.' => 'Source de paiement principale mise à jour.', + 'Primary' => 'Principal', + 'Private Note' => 'Note privée', + 'Product Fields' => 'Champs produit', + 'Product ID is required.' => 'Un identifiant produit est requis.', + 'Product Template' => 'Modèle du produit', + 'Product Title Format' => 'Format du titre de produit', + 'Product Type' => 'Type de produit', + 'Product Types' => 'Types de produits', + 'Product URI Format' => 'Format d\'URI produit', + 'Product Variant' => 'Variante de produit', + 'Product Variants' => 'Variantes de produit', + 'Product type saved.' => 'Type de produit enregistré.', + 'Product type settings' => 'Paramètres du type de produit', + 'Product' => 'Produit', + 'Products and Variants deleted.' => 'Produits et variantes supprimés.', + 'Products not restored.' => 'Produits non restaurés.', + 'Products restored.' => 'Produits restaurés.', + 'Products' => 'Produits', + 'Promotable' => 'Promouvable', + 'Promotable?' => 'Promouvable?', + 'Promotional Amount' => 'Montant promotionnel', + 'Promotional Price' => 'Prix promotionnel', + 'Purchasable Categories' => 'Catégories achetables', + 'Purchasable ID and Sale ID are required.' => 'Des identifiants achetable et de vente sont requis.', + 'Purchasable ID is required.' => 'Un identifiant achetable est requis.', + 'Purchasable Type' => 'Type d\'achat', + 'Purchasable' => 'Achetable', + 'Purchase (Authorize and Capture Immediately)' => 'Acheter (autoriser et collecter immédiatement)', + 'Purchase Total' => 'Total d’achat', + 'Qty' => 'Qté', + 'Quality Control' => 'Contrôle de la qualité', + 'Quantity' => 'Quantité', + 'Rate' => 'Taux', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => 'Réaffecter {numOrders, plural, =1{la commande} other{les commandes}}', + 'Recalculate order' => 'Recalculer la commande', + 'Receive Inventory' => 'Recevoir l\'inventaire', + 'Receive Transfer' => 'Recevoir le transfert', + 'Receive' => 'Recevoir', + 'Received' => 'Reçu', + 'Recent Orders' => 'Commandes récentes', + 'Recipient' => 'Destinataire', + 'Recover Cart' => 'Récupérer le panier', + 'Reduce price' => 'Diminuer le prix', + 'Reduce the price by a fixed amount' => 'Diminuer le prix d’un montant fixe', + 'Reduce the price by a percentage of the original price' => 'Réduire le prix selon un pourcentage du prix initial', + 'Reference' => 'Référence', + 'Refresh payment history' => 'Actualiser l\'historique de paiement', + 'Refund note' => 'Note de remboursement', + 'Refund payment' => 'Rembourser le paiement', + 'Refund' => 'Remboursement', + 'Reject' => 'Rejeter', + 'Rejected' => 'Rejeté', + 'Relationship Type' => 'Type de relation', + 'Removable included tax rates are only allowed for the default tax zone.' => 'Les taux de taxes inclus supprimables sont uniquement autorisés pour la zone de taxes par défaut.', + 'Remove address' => 'Supprimer l\'adresse', + 'Remove all shipping costs from the order' => 'Retirer tous les coûts d\'expédition de la commande', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => 'Supprimer l\'association avec le client et l\'adresse courriel {numOrders, plural, =1{de la commande} other{des commandes}}. Vous pouvez également sélectionner d\'autres données de clients à supprimer ci-dessous', + 'Remove customer data' => 'Supprimer les données de clients', + 'Remove from price?' => 'Retirer du prix?', + 'Remove shipping costs for matching items only' => 'Retirer les coûts d\'expédition uniquement pour les articles correspondants', + 'Remove the included tax when a valid organization tax ID is present?' => 'Supprimer la taxe incluse lorsqu\'un identifiant fiscal d\'organisation valide est présent?', + 'Remove' => 'Supprimer', + 'Removed' => 'Supprimé', + 'Repeat Customers' => 'Clients réguliers', + 'Reply To' => 'Répondre à', + 'Require Billing Address At Checkout' => 'Exiger l\'adresse de facturation au moment du paiement', + 'Require Coupon Code' => 'Demander un code de promotionnel', + 'Require Shipping Address At Checkout' => 'Exiger l\'adresse de livraison au moment du paiement', + 'Require Shipping Method Selection At Checkout' => 'Exiger le choix du mode d\'expédition au moment de la validation de la commande', + 'Require' => 'Demander', + 'Reserved' => 'Réservée', + 'Reset usage' => 'Réinitialiser l\'utilisation', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'Restreindre le rabais aux commandes où le client a acheté une valeur totale minimale d’articles correspondants.', + 'Revenue Options' => 'Options de revenus', + 'Revenue' => 'Revenu', + 'Rule' => 'Règle', + 'Rules reordered.' => 'Règles réorganisées.', + 'SKU' => 'UGS', + 'Safety' => 'Sécurité', + 'Sale Price' => 'Prix en promotion', + 'Sale description.' => 'Description de la vente.', + 'Sale reordered.' => 'Promotion réorganisée.', + 'Sale saved.' => 'Promotion enregistrée.', + 'Sale' => 'Vente', + 'Sales deleted.' => 'Ventes supprimées.', + 'Sales updated.' => 'Ventes mises à jour.', + 'Sales' => 'Ventes', + 'Save and continue editing' => 'Enregistrer et continuer la modification', + 'Save and return to all orders' => 'Enregistrer et revenir à l\'ensemble des commandes', + 'Save and set rules' => 'Enregistrer et appliquer les règles', + 'Save as a new rule' => 'Enregistrer en tant que nouvelle règle', + 'Save product to all sites enabled for this product type' => 'Enregistrer les produits sur tous les sites activés pour ce type de produit', + 'Save product to other sites in the same site group' => 'Enregistrer le produit sur les autres sites du même groupe de sites', + 'Save product to other sites with the same language' => 'Enregistrer le produit sur les autres sites ayant la même langue', + 'Save' => 'Enregistrer', + 'Search customer…' => 'Rechercher un client…', + 'Search inventory' => 'Rechercher dans les stocks', + 'Search or enter customer email…' => 'Rechercher ou saisir un courriel client…', + 'Search…' => 'Rechercher…', + 'See Orders' => 'Voir les commandes', + 'Select a gateway' => 'Sélectionner une passerelle', + 'Select a tax category.' => 'Sélectionner une catégorie de taxes.', + 'Select a tax zone. If empty, this rate will match anywhere.' => 'Sélectionner une zone fiscale. Si aucune zone n\'est sélectionnée, ce taux s\'appliquera partout.', + 'Select address' => 'Sélectionner l\'adresse', + 'Select an item' => 'Sélectionner un article', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'Sélectionnez la manière dont la règle de tarification du catalogue sera appliquée au(x) produit(s) acheté(s).', + 'Select how the sale will be applied to the purchasable(s).' => 'Indiquez comment la promotion sera appliquée aux articles en vente.', + 'Select product type' => 'Sélectionner le type de produit', + 'Select the emails that will be sent when transitioning to this status.' => 'Sélectionner les courriels qui seront envoyés lors de la transition à cet état.', + 'Select what this rate should be applied to.' => 'Sélectionner ce à quoi ce taux doit être appliqué.', + 'Send Email' => 'Envoyer le courriel', + 'Send to custom recipient' => 'Envoyer au destinataire personnalisé', + 'Send to the customer' => 'Envoyer au client', + 'Set Quantity' => 'Définir Quantité', + 'Set default category' => 'Définir la catégorie par défaut', + 'Set default variant' => 'Définir la variante par défaut', + 'Set or Adjust' => 'Régler ou ajuster', + 'Set price' => 'Définir le prix', + 'Set status' => 'Définir le statut', + 'Set the price to a flat amount' => 'Fixer le prix à un montant forfaitaire', + 'Set the price to a percentage of the original price' => 'Fixer le prix à un pourcentage du prix d\'origine', + 'Set the sale price to a flat amount' => 'Définir le prix en promotion à l\'aide d\'un montant fixe', + 'Set the sale price to a percentage of the original price' => 'Définir le prix en promotion comme un pourcentage du prix original', + 'Set to' => 'Définir sur', + 'Settings saved.' => 'Paramètres enregistrés.', + 'Settings' => 'Paramètres', + 'Share cart…' => 'Partager le panier…', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => 'Expédition - Le coût minimum est le coût d\'expédition, si le prix de la commande est inférieur au coût d\'expédition.', + 'Shipping Address Zone' => 'Zone d\'adresse de livraison', + 'Shipping Address' => 'Adresse de livraison', + 'Shipping Business Name' => 'Nom de l\'entreprise pour la livraison', + 'Shipping Categories' => 'Catégories d’expédition', + 'Shipping Category Conditions' => 'Conditions de la catégorie d’expédition', + 'Shipping Category' => 'Catégorie d’expédition', + 'Shipping First Name' => 'Nom pour la livraison', + 'Shipping Full Name' => 'Nom complet pour la livraison', + 'Shipping Last Name' => 'Nom pour la livraison', + 'Shipping Method' => 'Méthode d’expédition', + 'Shipping Methods' => 'Méthodes d’expédition', + 'Shipping Rule' => 'Règle de livraison', + 'Shipping Zones' => 'Zones d’expédition', + 'Shipping address required.' => 'Adresse de livraison requise.', + 'Shipping categories deleted.' => 'Catégories d\'expédition supprimées.', + 'Shipping category saved.' => 'Catégorie d’expédition enregistrée.', + 'Shipping category updated.' => 'Catégorie de livraison mise à jour.', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'Coûts d\'expédition ajoutés à la commande en un tout avant qu\'un pourcentage, un article et des tarifs au poids ne s\'appliquent. Régler à zéro pour désactiver ce taux. La règle entière, y compris ce taux de base, ne répondra pas et ne s\'appliquera pas si le panier ne contient que des articles non expédiables comme les produits numériques.', + 'Shipping method saved.' => 'Méthode d’expédition enregistrée.', + 'Shipping methods and rules deleted.' => 'Modes et règles d\'expédition supprimés.', + 'Shipping methods updated.' => 'Modes de livraison mis à jour.', + 'Shipping rule saved.' => 'Règle de livraison enregistrée.', + 'Shipping zone saved.' => 'Zone d’expédition enregistrée.', + 'Shipping' => 'Expédition', + 'Short Number' => 'Numéro court', + 'Show Chart?' => 'Afficher le graphique?', + 'Show Order Count?' => 'Afficher le nombre de commandes?', + 'Show all prices' => 'Afficher tous les prix', + 'Show archived gateways' => 'Afficher les portails archivés', + 'Show order count line on chart.' => 'Afficher la ligne de décompte des commandes sur le graphique.', + 'Show related sales' => 'Ventes liées au salon', + 'Show rule details' => 'Afficher les détails de la règle', + 'Show the Dimensions and Weight fields for products of this type' => 'Montrer les champs des dimensions et du poids pour les produits de ce type', + 'Show the Title field for products' => 'Afficher le champ Titre pour les produits', + 'Show the Title field for variants' => 'Montrer le champ titre pour les variantes', + 'Signed In' => 'Connexion effectuée', + 'Site Languages' => 'Langues du site', + 'Site store mapping saved.' => 'Cartographie du magasin du site enregistrée.', + 'Sites' => 'Sites', + 'Slug' => 'Identificateur', + 'Snapshot' => 'Instantané', + 'Snapshots' => 'Instantanés', + 'Some orders restored.' => 'Certaines commandes ont été restaurées.', + 'Some products restored.' => 'Certains produits ont été restaurés.', + 'Some variants restored.' => 'Certaines variantes ont été restaurées.', + 'Something changed with the order before payment, please review your order and submit payment again.' => 'Quelque chose a changé dans la commande avant le paiement, merci de la vérifier puis de soumettre le paiement de nouveau.', + 'Sorry, no matching options.' => 'Désolé, aucune option ne correspond.', + 'Source - The purchasable relationship field is on the category' => 'Source - Le champ de la relation d\'achat se trouve dans la catégorie', + 'Source' => 'Source', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Préciser une condition Twig déterminant si la réduction doit s\'appliquer à une commande donnée (la commande peut être référencée via la variable `order`).', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Préciser une condition Twig déterminant si la règle d\'expédition doit s\'appliquer à une commande donnée (la commande peut être référencée via la variable `order`).', + 'Start Date' => 'Date de début', + 'State' => 'État', + 'Status Email Address' => 'Adresse courriel d’état', + 'Status Emails' => 'Courriels d’état', + 'Status History' => 'Historique des statuts', + 'Status Updated.' => 'Statut mis à jour.', + 'Status change message' => 'Message de changement d\état', + 'Status' => 'État', + 'Stock' => 'Inventaire', + 'Stops Processing?' => 'Arrête le traitement?', + 'Stops subsequent?' => 'Arrête le suivant?', + 'Store Location' => 'Emplacement du magasin', + 'Store Management' => 'Gestion de magasin', + 'Store Markets' => 'Marchés de la boutique', + 'Store Rule' => 'Règle de magasin', + 'Store saved.' => 'Boutique enregistrée.', + 'Store' => 'Magasin', + 'Stores & Sites' => 'Magasins et sites', + 'Stores' => 'Magasins', + 'Strategy to apply when an order is free or has a zero balance.' => 'Stratégie à appliquer lorsqu\'une commande est gratuite ou a un solde nul.', + 'Strategy to apply when calculating the minimum order price.' => 'Stratégie à employer lors du calcul du prix de la commande minimale.', + 'Subject' => 'Objet', + 'Subscribing user' => 'Utilisateur abonné', + 'Subscription Fields' => 'Champs d’abonnement', + 'Subscription Plans' => 'Plans d’abonnement', + 'Subscription Settings' => 'Paramètres d\'abonnement', + 'Subscription cancelled.' => 'Abonnement annulé.', + 'Subscription date' => 'Date d’abonnement', + 'Subscription fields saved.' => 'Champs d’abonnement enregistrés.', + 'Subscription for {user} to {plan} prevented by a plugin.' => 'Un plugiciel a empêché l’abonnement de {user} à {plan}.', + 'Subscription plan saved.' => 'Abonnement enregistré.', + 'Subscription plan' => 'Plan d’abonnement', + 'Subscription plans' => 'Plans d’abonnement', + 'Subscription reactivated.' => 'Abonnement réactivé.', + 'Subscription reference' => 'Référence de l’abonnement', + 'Subscription started.' => 'Abonnement démarré.', + 'Subscription switched.' => 'Abonnement modifié.', + 'Subscription to “{plan}”' => 'Abonnement à « {plan} »', + 'Subscription' => 'Abonnement', + 'Subscriptions on hold' => 'Abonnements en attente', + 'Subscriptions' => 'Abonnements', + 'Suppress emails' => 'Réduire les courriels', + 'Switch plan' => 'Changer de plan', + 'Switch' => 'Changer', + 'System' => 'Système', + 'Table Columns' => 'Colonnes du tableau', + 'Target - The category relationship field is on the purchasable' => 'Cible - Le champ de la relation de catégorie se trouve sur la liste des produits achetables.', + 'Tax & Shipping' => 'Taxes et expédition', + 'Tax (inc)' => 'Taxe (incl.)', + 'Tax Categories' => 'Catégories de taxes', + 'Tax Category' => 'Catégorie de taxes', + 'Tax Rates' => 'Taux de taxes', + 'Tax Zone' => 'Zone de taxes', + 'Tax Zones' => 'Zones de taxes', + 'Tax categories deleted.' => 'Catégories de taxe supprimées.', + 'Tax category saved.' => 'Catégorie de taxes enregistrée.', + 'Tax category updated.' => 'Catégorie de taxe mise à jour.', + 'Tax rate saved.' => 'Taux de taxes enregistré.', + 'Tax rates updated.' => 'Taux de taxe mis à jour.', + 'Tax zone saved.' => 'Zone de taxe enregistrée.', + 'Tax' => 'Taxe', + 'Taxable Subject' => 'Objet taxable', + 'Template Path' => 'Chemin du modèle', + 'That handle is already in use' => 'Cet identificateur est déjà utilisé', + 'That handle is already in use.' => 'Cet identificateur est déjà utilisé.', + 'The PDF to attach to this email.' => 'Le PDF à attacher à ce courriel.', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => 'L\'URL de la page permettant de mettre à jour les détails de facturation d\'un abonnement, ainsi que de gérer l\'authentification 3DS.', + 'The address provided is outside the store’s market.' => 'L\'adresse fournie est en dehors du marché de la boutique.', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => 'Le montant du rabais qui est appliqué à l\'ensemble de la commande. Ce montant est réparti sur les articles dans l\'ordre, du prix le plus élevé au prix le plus bas, jusqu\'à la fin du rabais.', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => 'Le rabais de base ne peut réduire le prix des articles du panier à zéro ni rendre le montant de la commande négatif.', + 'The cart recovery link is invalid. Please request a new one.' => 'Le lien de récupération du panier n\'est pas valide. Veuillez en demander un nouveau.', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => 'Le taux de conversion qui sera utilisé lors de la conversion d’un montant en cette devise. Par exemple, si un article coût {amount1}, un taux de conversion de {rate} aboutira à {amount2} dans la devise alternative.', + 'The countries that orders are allowed to be placed from.' => 'Les pays depuis lesquels il est possible de passer une commande.', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'Le coupon « {code} » a dépassé la limite de {limit} utilisations.', + 'The customer for this order has been deleted.' => 'Le client associé à cette commande a été supprimé.', + 'The default shipping category is automatically available to all product types.' => 'La catégorie d\'expédition par défaut est automatiquement disponible pour tous les types de produits.', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'La remise « {name} » a dépassé sa limite d\'utilisation totale de {limit}.', + 'The download link has expired. Please request a new one.' => 'Le lien de téléchargement a expiré. Veuillez en demander un nouveau.', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => 'L’adresse courriel à partir de laquelle les courriels d’état de commande sont envoyés. Laisser vide pour utiliser l’adresse courriel de système définie dans les paramètres généraux de Craft.', + 'The entry that contains the description for this subscription’s plan.' => 'L’entrée qui contient la description de ce plan d’abonnement.', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => 'La remise forfaitaire appliquée à chaque article. Par ex : « 3 » pour 3 $ de remise par article.', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => 'Le format utilisé pour générer de nouveaux coupons, par exemple {example}. Tout caractère « # » sera remplacé par une lettre aléatoire.', + 'The from and to inventory locations must be different.' => 'Les emplacements des stocks de départ et d\'arrivée doivent être différents.', + 'The inventory locations this store uses.' => 'Les emplacements des stocks utilisés par ce magasin.', + 'The item is not enabled for sale.' => 'Cet article n’est pas activé pour la vente.', + 'The language the order was made in.' => 'La langue dans laquelle la commande a été passée.', + 'The language to be used when this email is rendered.' => 'La langue à utiliser lors de l\'affichage de ce courriel.', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'Le nombre maximum de niveaux que ce type de produit peut avoir. Laisser vide si cela n\'est pas pertinent.', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => 'Le maximum que le client doit dépenser sur l’expédition. Mettez à zéro pour désactiver.', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => 'Le minimum que le client doit dépenser sur l’expédition. Mettez à zéro pour désactiver.', + 'The order is not valid.' => 'La commande n\'est pas valide.', + 'The payment gateway that will be used for the subscription plan.' => 'Quelle passerelle de paiement sera utilisée pour le plan d’abonnement?', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => 'La valeur du pourcentage de rabais qui doit être appliqué à chaque article, par exemple {ex1} pour une remise de {ex2}. Les pourcentages sont arrondis à 2 décimales.', + 'The previously-selected shipping method is no longer available.' => 'La méthode d\'expédition précédemment sélectionnée n\'est plus disponible.', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Le prix de {description} a augmenté, il est passé de {originalSalePriceAsCurrency} à {newSalePriceAsCurrency}', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Le prix de {description} a baissé, il est passé de {originalSalePriceAsCurrency} à {newSalePriceAsCurrency}', + 'The primary currency cannot be changed after orders are placed.' => 'La devise principale ne peut être modifiée après la validation des commandes.', + 'The purchasable defines the relationship' => 'Le produit achetable définit la relation', + 'The purchasable is related by another element' => 'Le produit achetable est lié par un autre élément', + 'The recipient of the email. Twig code can be used here.' => 'Le destinataire du courriel. Du code Twig peut être utilisé ici.', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => 'L\'adresse courriel de réponse. Laisser vide pour une réponse normale à l\'expéditeur du courriel. Du code Twig peut être utilisé ici.', + 'The site the order was made in.' => 'Le site sur lequel la commande a été passée.', + 'The site to be used when this email is rendered.' => 'Le site à utiliser lorsque ce courriel est affiché.', + 'The subject line of the email. Twig code can be used here.' => 'L\'objet du courriel. Du code Twig peut être utilisé ici.', + 'The template that the PDF should be generated from.' => 'Le modèle à partir duquel le PDF doit être généré.', + 'The template to be used for HTML emails.' => 'Le modèle à utiliser pour les courriels HTML.', + 'The template to be used for plain text emails. Twig code can be used here.' => 'Le modèle à utiliser pour les courriels en texte brut. Du code Twig peut être utilisé ici.', + 'The template to use when a product’s URL is requested.' => 'Le modèle à utiliser lorsque l’URL d’un produit est demandé.', + 'The total number of order adjustments changed.' => 'Le nombre total d’ajustements de commande a changé.', + 'The total price of the order changed.' => 'Le montant total de la commande a été modifié.', + 'The total quantity of items within the order changed.' => 'La quantité totale d’articles dans la commande a changé.', + 'The unique SKU of the donation purchasable.' => 'L\'unique UGS de don pouvant être achetée.', + 'The unit of measurement that should be used when specifying product dimensions.' => 'L’unité de mesure qui devrait être utilisée pour indiquer les dimensions d’un produit.', + 'The unit of measurement that should be used when specifying product weights.' => 'L’unité de mesure qui devrait être utilisée pour indiquer les poids d’un produit.', + 'The webhook URL for this gateway.' => 'L\'URL du webhook pour cette passerelle.', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => 'Le nom de l’expéditeur à utiliser lors de l’envoi des courriels d’état de commande. Laisser vide pour utiliser le nom d’expéditeur défini dans les paramètres généraux de Craft.', + 'There are errors on the order' => 'Il y a des erreurs dans la commande', + 'There are only {num} “{description}” items left in stock.' => 'Il ne reste que {num} articles « {description} » en stock.', + 'There aren’t any product types to select yet.' => 'Il n\'y a pas encore de types de produits à sélectionner.', + 'There is no gateway or payment source available for use with this order.' => 'Aucun portail ou source de paiement disponible pour cette commande.', + 'There is no gateway selected that supports payment sources.' => 'Aucune passerelle prenant en charge les modes de paiement n’est sélectionnée.', + 'There is no shipping method selected for this order.' => 'Aucune méthode d\'expédition sélectionnée pour cette commande.', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'Cette URL chargera le panier dans la session de l\'utilisateur, ce qui en fera le panier actif.', + 'This action is not allowed for the current user.' => 'Cette action n\'est pas autorisée pour l\'utilisateur actuel.', + 'This category will be used as the default for all purchasables in this store.' => 'Cette catégorie sera utilisée par défaut pour tous les articles pouvant être achetés dans ce magasin.', + 'This coupon is for registered users and limited to {limit} uses.' => 'Ce coupon est limité à {limit} utilisations pour les utilisateurs inscrits.', + 'This coupon is limited to {limit} uses.' => 'Ce coupon est limité à {limit} utilisations.', + 'This coupon requires an email address.' => 'Ce rabais nécessite une adresse courriel.', + 'This gateway does not support that functionality.' => 'Cette passerelle ne prend pas en charge cette fonctionnalité.', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'Cela est annulé par le paramètre de configuration {setting} dans `config/{file}.php`.', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'Il s’agit de l’adresse physique de votre magasin. Elle peut être utilisée par divers plugiciels pour déterminer des éléments comme la livraison et les taxes. Elle peut aussi être utilisée dans les reçus PDF.', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'Ceci est le PDF par défaut qui sera fourni lors de la demande du PDF de commande.', + 'This is the last location for the {store} store.' => 'Il s\'agit du dernier emplacement pour le magasin {store}.', + 'This month' => 'Ce mois-ci', + 'This order has unsaved changes.' => 'Cette commande a des modifications non enregistrées.', + 'This week' => 'Cette semaine', + 'This year' => 'Cette année', + 'Times Used' => 'Nombre de fois utilisé', + 'Title' => 'Titre', + 'To' => 'À', + 'Today' => 'Aujourd’hui', + 'Too many variants for this product.' => 'Trop de variantes pour ce produit.', + 'Top Customers by Average Order' => 'Meilleurs clients par commande moyenne', + 'Top Customers by Total Revenue' => 'Meilleurs clients par recettes totales', + 'Top Customers' => 'Meilleurs clients', + 'Top Product Types by Qty Sold' => 'Meilleurs types de produits par Qté vendue', + 'Top Product Types by Revenue' => 'Meilleurs types de produits par recettes', + 'Top Product Types' => 'Meilleurs types de produits', + 'Top Products by Qty Sold' => 'Meilleurs produits par Qté vendue', + 'Top Products by Revenue' => 'Meilleurs produits par recettes', + 'Top Products' => 'Meilleurs produits', + 'Top Purchasables by Qty Sold' => 'Meilleurs achetables par Qté vendue', + 'Top Purchasables by Revenue' => 'Meilleurs achetables par recettes', + 'Top Purchasables' => 'Meilleurs achetables', + 'Total ' => 'Total ', + 'Total Discount Use Limit' => 'Limite d\'utilisation totale des rabais', + 'Total Discount' => 'Rabais total', + 'Total Included Tax' => 'Taxes totales incluses', + 'Total Orders by Billing Country' => 'Total des commandes par pays de facturation', + 'Total Orders by Country' => 'Total des commandes par pays', + 'Total Orders by Shipping Country' => 'Total des commandes par pays de livraison', + 'Total Orders' => 'Nombre total de commandes', + 'Total Paid' => 'Total payé', + 'Total Price' => 'Prix total', + 'Total Qty' => 'Qté totale', + 'Total Revenue' => 'Total des recettes', + 'Total Shipping' => 'Total de la livraison', + 'Total Tax' => 'Total des taxes', + 'Total Weight' => 'Poids total', + 'Total' => 'Total', + 'Track Inventory' => 'Suivi des stocks', + 'Transaction Hash' => 'Hachage de la transaction', + 'Transaction ID' => 'ID de la transaction', + 'Transaction captured successfully: {message}' => 'Transaction collectée avec succès : {message}', + 'Transaction refunded successfully: {message}' => 'Transaction remboursée avec succès : {message}', + 'Transactions' => 'Transactions', + 'Transfer Fields' => 'Champs de transfert', + 'Transfer Items' => 'Articles de transfert', + 'Transfer Settings' => 'Paramètres de transfert', + 'Transfer Status' => 'Statut du transfert', + 'Transfer fields saved.' => 'Champs de transfert enregistrés.', + 'Transfer must have at least one item.' => 'Le transfert doit comporter au moins un article.', + 'Transfer' => 'Transférer', + 'Transfers' => 'Transferts', + 'Trial days credited' => 'Jours d’essai crédités', + 'Trial expiration' => 'Expiration de l\'essai', + 'Trial expiry date' => 'Date d’expiration de la version d’essai', + 'Type not in allowed options.' => 'Type non autorisé dans les options.', + 'Type' => 'Type', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => 'Impossible d\'annuler l’abonnement actuellement.', + 'Unable to complete order: another request is already in progress.' => 'Impossible de terminer la commande : une autre demande est déjà en cours.', + 'Unable to find variant.' => 'Impossible de trouver la variante.', + 'Unable to generate coupon codes: {message}' => 'Impossible de générer des codes de réduction : {message}', + 'Unable to make payment at this time.' => 'Impossible d’effectuer le paiement pour le moment.', + 'Unable to modify subscription at this time.' => 'Impossible de modifier l’abonnement actuellement.', + 'Unable to reactivate subscription at this time.' => 'Impossible de réactiver l’abonnement pour le moment.', + 'Unable to reassign orders.' => 'Impossible de réattribuer les commandes.', + 'Unable to remove order data.' => 'Impossible de supprimer les données de la commande.', + 'Unable to retrieve Sale and Purchasable.' => 'Impossible de récupérer les promotions et les achetables.', + 'Unable to retrieve cart.' => 'Impossible de récupérer le panier.', + 'Unable to retrieve customer.' => 'Impossible de récupérer le client.', + 'Unable to retrieve load cart URL' => 'Impossible de récupérer et charger l\'URL du panier', + 'Unable to retrieve payment source.' => 'Impossible de récupérer la source de paiement.', + 'Unable to set default shipping category.' => 'Impossible de définir la catégorie d\'expédition par défaut.', + 'Unable to set default tax category.' => 'Impossible de définir la catégorie de taxe par défaut.', + 'Unable to set primary payment source.' => 'Impossible de définir la source de paiement principale.', + 'Unable to start the subscription. Please check your payment details.' => 'Impossible de démarrer l’abonnement. Veuillez vérifier vos informations de paiement.', + 'Unable to subscribe at this time.' => 'Impossible de s’abonner pour le moment.', + 'Unable to update cart.' => 'Impossible de mettre à jour le panier.', + 'Unable to validate address.' => 'Impossible de valider l’adresse.', + 'Unit Price' => 'Prix unitaire', + 'Unit price (minus discounts)' => 'Prix unitaire (moins les remises)', + 'Units' => 'Unités', + 'Unpaid' => 'Non payé', + 'Unsubscribe' => 'Annuler l’abonnement', + 'Update Address' => 'Mettre à jour l’adresse', + 'Update Order Status' => 'Mettre à jour le statut de la commande', + 'Update Order Status…' => 'Mettre à jour le statut de la commande…', + 'Update order' => 'Mettre à jour la commande', + 'Update subscription' => 'Mettre à jour l\'abonnement', + 'Update' => 'Mettre à jour', + 'Updated By' => 'Mis à jour par', + 'Updated committed stock successfully.' => 'Validation des stocks engagés réussie.', + 'Updated' => 'Mis à jour', + 'Use Billing Address For Tax' => 'Utiliser l\'adresse de facturation pour les taxes', + 'Use as the primary billing address' => 'Utiliser comme adresse de facturation principale', + 'Use as the primary shipping address' => 'Utiliser comme adresse de livraison principale', + 'Used By Tax Rates' => 'Utilisé par les taux de taxes', + 'Used by Tax Rates' => 'Utilisé par le taux de taxe', + 'User Groups' => 'Groupes d’utilisateurs', + 'User not found.' => 'Utilisateur non trouvé.', + 'User' => 'Utilisateur', + 'Uses' => 'Utilisations', + 'Validate Business Tax ID as Vat ID' => 'Valider l\'ID de la taxe d\'affaires en tant qu\'ID de TPS/TVQ', + 'Validating condition syntax' => 'Validation de la syntaxe conditionnelle', + 'Validating formula syntax' => 'Validation de la syntaxe de la formule', + 'Variant Fields' => 'Champs de variante', + 'Variant Has Untracked Stock' => 'La variante a un stock non tracé', + 'Variant Price' => 'Prix de la variante', + 'Variant SKU' => 'UGS de la variante', + 'Variant Search' => 'Rechercher une variante', + 'Variant Stock' => 'Stock de la variante', + 'Variant Title Format' => 'Format de titre de variante', + 'Variant Tracks Stock' => 'La variante suit les stocks', + 'Variant UI Label Format' => 'Format des étiquettes de l\'interface de variantes', + 'Variant has no product.' => 'La variante n\'a pas de produit.', + 'Variants not restored.' => 'Variantes non restaurées.', + 'Variants restored.' => 'Variantes restaurées.', + 'Variants' => 'Variantes', + 'View customer' => 'Voir le client', + 'View order' => 'Afficher la commande', + 'View product type - {productType}' => 'Voir le type de produit - {productType}', + 'View user' => 'Voir l\'utilisateur', + 'View' => 'Voir', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => 'Attention, la suppression de cette devise entraînera l\'arrêt de tous les paiements et remboursements dans cette devise, êtes-vous sûr de vouloir supprimer « {name} »?', + 'Web' => 'Web', + 'Webhook URL' => 'URL du webhook', + 'Weight ({unit})' => 'Poids ({unit})', + 'Weight Rate' => 'Taux de poids', + 'Weight Unit' => 'Unité de poids', + 'Weight' => 'Poids', + 'What product URIs should look like for the site.' => 'Ce à quoi les URIs de produits devraient ressembler pour le site.', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Ce à quoi devraient ressembler les titres de produits générés automatiquement. Vous pouvez inclure des balises qui produisent des propriétés de produits, comme {ex1} ou {ex2}. Tous les champs personnalisés utilisés doivent être définis comme étant obligatoires.', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Ce à quoi les titres de variante auto-générés devraient ressembler. Vous pouvez inclure des étiquettes qui sélectionnent les propriétés de la variante, comme {ex1} ou {ex2}. Tous les champs personnalisés utilisés doivent être exigés.', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => 'Ce à quoi le nom de fichier PDF de commande devrait ressembler (sans extension). Vous pouvez inclure des étiquettes représentant certaines caractéristiques de la commande, telles que {ex1} ou {ex2}.', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'Ce à quoi les UGS auto-générés devraient ressembler, lorsqu’un champ d\'UGS est soumis à vide. Vous pouvez inclure des étiquettes qui sélectionnent les propriétés, comme {ex1} ou {ex2}.', + 'What this PDF will be called in the control panel.' => 'Nom de ce PDF dans le panneau de configuration.', + 'What this catalog pricing rule will be called in the control panel.' => 'Le nom de cette règle de tarification du catalogue dans le panneau de configuration.', + 'What this discount will be called in the control panel.' => 'Nom de ce rabais dans le panneau de configuration.', + 'What this email will be called in the control panel.' => 'Nom de ce courriel dans le panneau de configuration.', + 'What this product type will be called in the control panel.' => 'Nom de ce type de produit dans le panneau de configuration.', + 'What this sale will be called in the control panel.' => 'Nom de cette promotion dans le panneau de configuration.', + 'What this shipping category will be called in the control panel.' => 'Nom de cette catégorie de livraison dans le panneau de configuration.', + 'What this shipping rule will be called in the control panel.' => 'Nom de cette règle de livraison dans le panneau de configuration.', + 'What this shipping zone will be called in the control panel.' => 'Nom de cette zone de livraison dans le panneau de configuration.', + 'What this status will be called in the control panel.' => 'Nom de ce statut dans le panneau de configuration.', + 'What this subscription plan will be called in the control panel.' => 'Nom de cet abonnement dans le panneau de configuration.', + 'What this tax category will be called in the control panel.' => 'Nom de cette catégorie de taxe dans le panneau de configuration.', + 'What this tax zone will be called in the control panel.' => 'Nom de cette zone de taxe dans le panneau de configuration.', + 'When this discount is applied to an order, which line items should be discounted?' => 'Lorsque ce rabais est appliqué à une commande, quels postes doivent faire l\'objet d\'un rabais?', + 'Whether the first available shipping method option should be set automatically on carts.' => 'Indique si la première option de méthode d\'expédition disponible doit être définie automatiquement dans les paniers.', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'Indique si la source de paiement principale de l\'utilisateur doit être définie automatiquement pour les nouveaux paniers.', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'Indique si les adresses principales de livraison et de facturation de l\'utilisateur doivent être définies automatiquement pour les nouveaux paniers.', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => 'Indique si cette règle de tarification du catalogue doit pouvoir être utilisée, indépendamment d\'autres conditions.', + 'Whether this sale should be available for use, regardless of other conditions.' => 'Si cette vente doit être disponible ou non, indépendamment des autres conditions.', + 'Which data to display in the name column in the results table.' => 'Les données à afficher dans la colonne des noms dans le tableau des résultats.', + 'Which product types should this category be available to?' => 'Dans quels types de produits cette catégorie devrait-elle être offerte?', + 'Which template should be loaded when a product’s URL is requested.' => 'Quel modèle devrait être chargé quand l’URL d’un produit est demandée.', + 'Width ({unit})' => 'Largeur ({unit})', + 'Width' => 'Largeur', + 'YYYY' => 'AAAA', + 'Yes' => 'Oui', + 'You are not allowed to add a line item.' => 'Vous n\'êtes pas autorisé à ajouter un article.', + 'You currently have no emails configured to select for this status.' => 'Vous n\'avez actuellement aucune adresse courriel configurée à sélectionner pour ce statut.', + 'You do not have permission to load this cart.' => 'Vous n\'êtes pas autorisé à charger ce panier.', + 'You must set up at least one gateway that supports subscriptions first.' => 'Vous devez définir au moins une passerelle qui prend d’abord en charge les abonnements.', + 'You must be logged in or provide a valid token to load this cart.' => 'Vous devez être connecté ou fournir un jeton valide pour charger ce panier.', + 'You must be signed in to create a payment source.' => 'Vous devez être inscrit pour créer une source de paiement.', + 'You must be signed in to set a primary payment source.' => 'Vous devez être inscrit pour définir une source de paiement principale.', + 'You must make a payment to complete the order.' => 'Vous devez effectuer un paiement pour terminer la commande.', + 'Your Cart Recovery Link' => 'Votre lien de récupération de panier', + 'Your Order PDF Download Link' => 'Lien de téléchargement du PDF de votre commande', + 'Your order is empty' => 'Votre commande est vide', + 'ZIP file' => 'Fichier ZIP', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'Zéro - Le prix minimum est zéro si les rabais dépassent la valeur de la commande.', + 'Zip Code' => 'Code postal', + 'all' => 'tous', + 'any' => 'n\'importe quel', + 'average order total' => 'total de commande moyen', + 'billing address' => 'adresse de facturation', + 'donation' => 'don', + 'donations' => 'dons', + 'info' => 'infos', + 'inventory location' => 'emplacement des stocks', + 'new customers' => 'nouveaux clients', + 'on hand' => 'disponible', + 'only' => 'seulement', + 'order' => 'commande', + 'orders' => 'commandes', + 'price' => 'prix', + 'prices' => 'prix', + 'product variant' => 'variante du produit', + 'product variants' => 'variantes du produit', + 'product' => 'produit', + 'products' => 'produits', + 'repeat customers' => 'clients réguliers', + 'shipping address' => 'adresse de livraison', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'Les valeurs shippingSameAsBilling et billingSameAsShipping ne peuvent être définies.', + 'subscription' => 'abonnement', + 'subscriptions' => 'abonnements', + 'to' => 'à', + 'transfer' => 'transférer', + 'transfers' => 'transferts', + '{amount} included' => '{amount} inclus', + '{count} Unfulfilled Orders' => '{count} commandes non satisfaites', + '{description} is no longer available.' => '{description} n\'est plus disponible.', + '{description} only has {stock} in stock.' => '{description} n\'a que {stock} unités en stock.', + '{from} to {to}' => '{from} à {to}', + '{name} (Primary)' => '{name} (primaire)', + '{name} (Trashed)' => '{name} (mis à la poubelle)', + '{name} catalog price' => 'prix catalogue {name}', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, one {}=1{commande mise à jour} other{commandes mises à jour}}.', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, =1{commande est associée} other{commandes sont associées}} {numUsers, plural, =1{à l\'utilisateur} other{aux utilisateurs}}.', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, =1{abonnement est activé} other{abonnements sont activés}} pour {numUsers, plural, =1{l\'utilisateur} other{les utilisateurs}}.', + '{number} more…' => '{number} plus…', + '{pct} off the discounted item price' => '{pct} sur le prix de l\'article incluant le rabais', + '{pct} off the original item price' => '{pct} sur le prix original de l\'article', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, =1{n\'a pas été assigné} other{n\'ont pas été assignés}} à un site.', + '{total} in total revenue' => '{total} dans les recettes totales', + '{total} orders' => '{total} commandes', + '{total} saleable across {locationCount} location(s)' => '{total} vendables parmi {locationCount} emplacement(s).', + '{uses} uses across {emails} email addresses' => '{uses} utilisations pour {emails} adresses courriel', + '{uses} uses across {users} users' => '{uses} utilisations pour {users} utilisateurs', + '“{description}” is currently out of stock.' => '« {description} » est actuellement épuisé.', + '“{key}” has invalid JSON' => '« {key} » possède une valeur JSON non valide', +]; diff --git a/lang/fr/commerce.php b/lang/fr/commerce.php new file mode 100644 index 0000000000..9fa6bcfeac --- /dev/null +++ b/lang/fr/commerce.php @@ -0,0 +1,1423 @@ + '(nouveau prix)', + '(of original price)' => '(par rapport au prix d’origine)', + '(off original price)' => '(en moins par rapport au prix d’origine)', + 'A cart number must be specified.' => 'Un numéro de panier doit être spécifié.', + 'A cart recovery link has been sent to {email}.' => 'Un lien de récupération du panier a été envoyé à {email}.', + 'A cart recovery link will be sent to {email}.' => 'Un lien de récupération du panier sera envoyé à {email}.', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'Un numéro de référence simple sera généré sur la base de ce format lors de la finalisation d’un panier et de sa conversion en commande. Par exemple {ex1}, ou
{ex2}. Le résultat de ce formatage doit être unique.', + 'A new download link has been sent to {email}' => 'Un nouveau lien de téléchargement a été envoyé à {email}', + 'A new download link will be sent to {email}' => 'Un nouveau lien de téléchargement sera envoyé à {email}', + 'A valid email is required to create a customer.' => 'Un e-mail valide est requis pour créer un client.', + 'Accept' => 'Accepter', + 'Accepted' => 'Accepté', + 'Actions' => 'Actions', + 'Active Carts' => 'Paniers actifs', + 'Active subscriptions' => 'Abonnements actifs', + 'Active' => 'Actif', + 'Add Address' => 'Ajouter l’adresse', + 'Add a coupon' => 'Ajouter un coupon', + 'Add a custom line item' => 'Ajouter un article personnalité', + 'Add a line item' => 'Ajouter un article', + 'Add a product' => 'Ajouter un produit', + 'Add a variant' => 'Ajouter une variante', + 'Add an adjustment' => 'Ajouter un ajustement', + 'Add an item' => 'Ajouter un article', + 'Add an option' => 'Ajouter une option', + 'Add catalog price' => 'Ajouter le prix de catalogue', + 'Add' => 'Ajouter', + 'Additional Actions' => 'Actions supplémentaires', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'Destinataires additionnels qui devraient recevoir cet e-mail. Du code Twig peut être utilisé ici.', + 'Address 1' => 'Adresse 1', + 'Address 2' => 'Adresse 2', + 'Address 3' => 'Adresse 3', + 'Address Line 1' => 'Adresse ligne 1', + 'Address Line 2' => 'Adresse ligne 2', + 'Address Updated.' => 'Adresse mise à jour.', + 'Address copied to user.' => 'Adresse copiée pour l\'utilisateur.', + 'Address not found.' => 'Adresse non trouvée.', + 'Adjust Quantity' => 'Ajuster la quantité', + 'Adjust by' => 'Ajuster par', + 'Adjust price when included rate is disqualified?' => 'Ajuster le prix lorsque le taux de taxe inclus est disqualifié ?', + 'Adjustments' => 'Ajustements', + 'Admin Notices' => 'Avis de l\'administrateur', + 'Administrative Area Code of Origin' => 'Code d\'origine de la zone administrative', + 'Advanced' => 'Avancé', + 'All Orders' => 'Toutes les commandes', + 'All Totals' => 'Tous les totaux', + 'All Transfers' => 'Tous les transferts', + 'All active subscriptions' => 'Tous les abonnements actifs', + 'All customers' => 'Tous les clients', + 'All products' => 'Tous les produits', + 'All variants must have a SKU.' => 'Toutes les variantes doivent avoir un SKU.', + 'All' => 'Tous', + 'Allow Checkout Without Payment' => 'Autoriser le passage de commande sans paiement', + 'Allow Empty Cart On Checkout' => 'Autoriser le panier vide au passage de commande', + 'Allow Partial Payment On Checkout' => 'Autoriser le paiement partiel au passage de commande', + 'Allow out of stock purchases' => 'Permettre les achats de produits en rupture de stock', + 'Allow' => 'Autoriser', + 'Allowed Qty' => 'Quantité autorisée', + 'Alternative Phone' => 'Autre téléphone', + 'Amount' => 'Montant', + 'An ID must be provided' => 'Un identifiant doit être fourni', + 'An error occurred while generating this PDF.' => 'Une erreur est survenue lors la création de ce fichier PDF.', + 'Any' => 'N\'importe quel', + 'Anywhere' => 'Partout', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => 'Souhaitez-vous réellement archiver l’abonnement "{name}" ? Cette opération N’ANNULERA PAS les abonnements existants.', + 'Are you sure you want to capture this transaction?' => 'Êtes-vous sûr de vouloir collecter cette transaction ?', + 'Are you sure you want to complete this order?' => 'Êtes-vous sûr de vouloir terminer cette commande ?', + 'Are you sure you want to delete the selected orders?' => 'Êtes-vous sûr de vouloir supprimer les commandes sélectionnées ?', + 'Are you sure you want to delete the selected product and its variants?' => 'Êtes-vous sûr de vouloir supprimer le produit sélectionné et ses variantes ?', + 'Are you sure you want to delete this shipping rule?' => 'Êtes-vous sûr de vouloir supprimer cette règle de livraison ?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => 'Êtes-vous sûr de vouloir supprimer « {name} » et tous ses produits ? Veuillez vous assurer que vous avez effectué une sauvegarde de votre base de données avant de réaliser cette action destructrice.', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => 'Voulez-vous vraiment supprimer « {name} » ? Cela définira tous les articles avec ce statut sur aucun statut.', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'Voulez-vous vraiment marquer ce transfert comme étant en attente ? Il apparaîtra comme entrant à la destination.', + 'Are you sure you want to overwrite the billing address?' => 'Êtes-vous sûr de vouloir écraser les adresses de facturation ?', + 'Are you sure you want to overwrite the shipping address?' => 'Êtes-vous sûr de vouloir écraser les adresses d\'expédition ?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'Voulez-vous vraiment définitivement supprimer ce magasin et tout ce qu\'il contient ?', + 'Are you sure you want to refund this transaction?' => 'Êtes-vous sûr de vouloir rembourser cette transaction ?', + 'Are you sure you want to remove this customer?' => 'Êtes-vous sûr de vouloir supprimer ce client ?', + 'Are you sure you want to save this as a new shipping rule?' => 'Êtes-vous sûr de vouloir enregistrer cette règle comme nouvelle règle de livraison ?', + 'Are you sure you want to send email: {name}?' => 'Êtes-vous sûr de vouloir envoyer l\'e-mail : {name} ?', + 'At least one site must be enabled for the product type.' => 'Au moins un site doit être activé pour le type de produit.', + 'Attempted Payments' => 'Tentatives de paiement effectuées', + 'Attention' => 'Attention', + 'Authorize Only (Manually Capture)' => 'Autoriser uniquement (collecter manuellement)', + 'Auto Set Cart Shipping Method Option' => 'Définir automatiquement l\'option du mode d\'expédition', + 'Auto Set New Cart Addresses' => 'Définir automatiquement les nouvelles adresses du panier', + 'Auto Set Payment Source' => 'Définir automatiquement la source du paiement', + 'Automatic SKU Format' => 'Formatage automatique du code article interne', + 'Available Shipping Categories' => 'Catégories de livraison disponibles', + 'Available Tax Categories' => 'Catégories de taxes disponibles', + 'Available for purchase' => 'Disponible à l’achat', + 'Available for purchase?' => 'Disponible à l’achat ?', + 'Available inventory for "{description}" has gone below zero.' => 'L\'inventaire disponible pour « {description} » est passé en dessous de zéro.', + 'Available to Product Types' => 'Disponible dans types de produits', + 'Available' => 'Disponible', + 'Available?' => 'Disponible ?', + 'Average Order Total' => 'Total de commande moyen', + 'Average' => 'Moyenne', + 'BCC’d Recipient' => 'Destinataire en copie cachée', + 'Bad Request' => 'Requête incorrecte', + 'Bad address ID.' => 'Mauvais identifiant d\'adresse.', + 'Bad order ID.' => 'Mauvais identifiant de commande.', + 'Base Price' => 'Prix de base', + 'Base Promotional Price' => 'Prix promotionnel de base', + 'Base Rate' => 'Frais de base', + 'Base' => 'Base', + 'Bcc' => 'Cci', + 'Billing Address' => 'Adresse de facturation', + 'Billing Business Name' => 'Nom commercial pour la facture', + 'Billing First Name' => 'Nom pour la facturation', + 'Billing Full Name' => 'Nom complet pour la facture', + 'Billing Last Name' => 'Nom pour la facturation', + 'Billing address required.' => 'Adresse de facturation requise.', + 'Billing detail update URL' => 'URL de mise à jour des informations de facturation', + 'Billing issues' => 'Problèmes de facturation', + 'Billing' => 'Facturation', + 'Both (Line item price + Line item shipping costs)' => 'Les deux (Prix de l’article + Frais de livraison de l’article)', + 'Business ID' => 'Numéro d\'identification de l\'entreprise', + 'Business Name' => 'Nom commercial', + 'Business Tax ID' => 'Identifiant fiscal de l\'entreprise (ex. numéro de TVA intracommunautaire)', + 'CC’d Recipient' => 'Destinataire en copie', + 'CVV' => 'CVV', + 'Can be used as an internal reference.' => 'Peut être utilisé comme référence interne.', + 'Can not complete payment for missing transaction.' => 'Impossible de finaliser le paiement pour la transaction manquante.', + 'Can not create a new order' => 'Impossible de créer une nouvelle commande', + 'Can not find an order to pay.' => 'Impossible de trouver une commande à payer.', + 'Can not find enabled email.' => 'Impossible de trouver l\'e-mail activé.', + 'Can not find order' => 'Impossible de trouver la commande', + 'Can not find order.' => 'Impossible de trouver la commande.', + 'Can not find the transaction to refund' => 'Impossible de trouver la transaction à rembourser', + 'Can not move between these inventory types.' => 'Impossible de se déplacer entre ces types d\'inventaire.', + 'Can not refund amount greater than the remaining amount' => 'Impossible de rembourser un montant supérieur au montant restant', + 'Cancel subscription' => 'Annuler l’abonnement', + 'Cancel with gateway now' => 'Annuler avec la passerelle maintenant', + 'Cancel' => 'Annuler', + 'Cancellation date' => 'Date d’annulation', + 'Cancellation' => 'Annulation', + 'Cannot switch plans for this subscription.' => 'Cet abonnement ne peut pas être basculé vers un autre abonnement.', + 'Can’t preview this email.' => 'Impossible de prévisualiser cet e-mail.', + 'Capture payment' => 'Capturer le paiement', + 'Capture' => 'Collecter', + 'Card Holder' => 'Titulaire de la carte', + 'Card Number' => 'Numéro de carte', + 'Card' => 'Carte', + 'Cart Recovery Link' => 'Lien de récupération du panier', + 'Cart forgotten.' => 'Panier oublié.', + 'Cart updated.' => 'Panier mis à jour.', + 'Cart {number}' => 'Panier {number}', + 'Catalog Pricing Rule' => 'Règle de tarification du catalogue', + 'Catalog pricing rule description.' => 'Description de la règle de tarification du catalogue.', + 'Catalog pricing rule saved.' => 'Règle de tarification du catalogue enregistrée.', + 'Catalog pricing rules deleted.' => 'Règles de tarification du catalogue supprimées.', + 'Catalog pricing rules updated.' => 'Mise à jour des règles de tarification du catalogue.', + 'Categories Relationship Type' => 'Type de relation des catégories', + 'Categories' => 'Catégories', + 'Category Rate Overrides' => 'Dépassements des taux de catégorie', + 'Centimeters (cm)' => 'Centimètres (cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'La modification de cette valeur peut affecter votre capacité à rembourser les transactions existantes.', + 'Choose a color to represent the order’s status' => 'Choisissez une couleur pour représenter le statut de la commande', + 'Choose a new customer' => 'Choisissez un nouveau client', + 'Choose adjustment values to include when calculating the product revenue total.' => 'Choisissez les valeurs d\'ajustement à inclure lors du calcul du total des revenus du produit.', + 'Choose the currency’s ISO code.' => 'Sélectionner le code ISO de la devise.', + 'Choose the destination inventory location for the existing on hand stock.' => 'Choisissez l\'emplacement de l\'inventaire de destination pour le stock existant.', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'Choisir les sites pour lesquels ce type de produit sera disponible et configurer les paramètres spécifiques aux sites.', + 'City' => 'Ville', + 'Clear counter' => 'Effacer le compteur', + 'Clear notices' => 'Effacer les avis', + 'Close' => 'Fermer', + 'Code' => 'Code', + 'Collated PDF' => 'PDF unique', + 'Color' => 'Couleur', + 'Commerce Products' => 'Produits de Commerce', + 'Commerce Settings' => 'Paramètres de Craft Commerce', + 'Commerce Variants' => 'Variantes Commerce', + 'Commerce email “{email}” could not be sent for order “{order}”.' => 'L’e-mail de Commerce « {email} » n’a pas pu être envoyé pour la commande « {order} ».', + 'Commerce order exports' => 'Exportations de commandes Commerce', + 'Commerce' => 'Commerce', + 'Committed' => 'Validé', + 'Completed Email' => 'E-mail terminé', + 'Completed' => 'Terminé', + 'Completing order failed.' => 'Échec de l\'exécution de la commande.', + 'Condition' => 'Condition', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'Les conditions sont comparées à une commande avant d\'examiner les règles. Cette fonction est utile si vous souhaitez vérifier la disponibilité d\'une méthode à un stade précoce ou s\'il existe des conditions communes à toutes les règles relatives à cette méthode.', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'Les conditions sont comparées à la commande du client avant d\'examiner les règles. Cette fonction est utile si vous souhaitez vérifier la disponibilité d\'une méthode à un stade précoce ou s\'il existe des conditions communes à toutes les règles relatives à cette méthode.', + 'Conditions' => 'Conditions', + 'Contains Purchasables' => 'Contient des articles disponibles à l\'achat', + 'Control Panel Settings' => 'Paramètres du panneau de contrôle', + 'Control panel' => 'Panneau de contrôle', + 'Conversion Rate' => 'Taux de conversion', + 'Converted Price' => 'Prix converti', + 'Copied!' => 'Copié !', + 'Copy the URL' => 'Copier l\'URL', + 'Copy to {location}' => 'Copier vers {location}', + 'Copy' => 'Copier', + 'Costs' => 'Coûts', + 'Could not archive gateway.' => 'Impossible d’archiver le portail.', + 'Could not cancel “{reference}”.' => 'Échec de l\'annulation de « {reference} ».', + 'Could not create the payment source.' => 'Impossible de créer la source de paiement.', + 'Could not delete shipping rule' => 'Impossible de supprimer la règle de livraison', + 'Could not delete shipping zone' => 'Impossible de supprimer la zone de livraison', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => 'Impossible de supprimer {count, number} {count, plural,one{catégorie} other{catégories}} de livraison.', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => 'Impossible de supprimer {count, number} {count, plural,one{mode} other{modes}} et règles de livraison.', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => 'Impossible de supprimer {count, number} {count, plural,one{catégorie} other{catégories}} de taxes.', + 'Could not find the email or template.' => 'E-mail ou modèle introuvable.', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => 'Impossible de marquer la commande {number} comme finalisée. L’enregistrement de la commande a échoué au cours de la finalisation avec des erreurs : {order}', + 'Could not reactivate “{reference}”.' => 'Échec de la réactivation de « {reference} ».', + 'Could not send email' => 'Impossible d\'envoyer l\'e-mail', + 'Could not switch “{reference}” to “{plan}”.' => 'Impossible de passe « {reference} » à « {plan} ».', + 'Could not update orders address.' => 'Impossible de mettre à jour l\'adresse des commandes.', + 'Couldn’t archive Line Item Status.' => 'Impossible d\'archiver le statut de l\'article.', + 'Couldn’t archive Order Status.' => 'Impossible d\'archiver le statut de commande.', + 'Couldn’t capture transaction.' => 'Impossible de collecter la transaction.', + 'Couldn’t capture transaction: {message}' => 'Impossible de collecter la transaction : {message}', + 'Couldn’t delete email.' => 'Impossible de supprimer l\'e-mail.', + 'Couldn’t delete the payment source.' => 'Impossible de supprimer la source de paiement.', + 'Couldn’t get order.' => 'Impossible d\'obtenir la commande.', + 'Couldn’t recalculate order.' => 'Impossible de recalculer la commande.', + 'Couldn’t refund transaction.' => 'Impossible de rembourser la transaction.', + 'Couldn’t refund transaction: {message}' => 'Impossible de rembourser la transaction : {message}', + 'Couldn’t reorder Line Item Statuses.' => 'Nous n\'avons pas pu réorganiser le statut des articles.', + 'Couldn’t reorder Order Statuses.' => 'Nous n\'avons pas pu réorganiser le statut des commandes.', + 'Couldn’t reorder PDFs.' => 'Impossible de réorganiser les PDF.', + 'Couldn’t reorder discounts.' => 'Nous n\'avons pas pu réorganiser les réductions.', + 'Couldn’t reorder gateways.' => 'Impossible de réorganiser les portails.', + 'Couldn’t reorder plans.' => 'Impossible de réorganiser les abonnements.', + 'Couldn’t reorder rules.' => 'Impossible de réorganiser les règles.', + 'Couldn’t reorder sale.' => 'Impossible de réorganiser la promotion.', + 'Couldn’t reorder sales.' => 'Impossible de réorganiser les ventes.', + 'Couldn’t reorder statuses.' => 'Impossible de réorganiser les statuts.', + 'Couldn’t reorder stores.' => 'Impossible de commander à nouveau dans les magasins.', + 'Couldn’t save PDF.' => 'Impossible d’enregistrer le PDF.', + 'Couldn’t save catalog pricing rule.' => 'Impossible d\'enregistrer la règle de tarification du catalogue.', + 'Couldn’t save currency.' => 'La devise n\'a pas pu être enregistrée.', + 'Couldn’t save discount.' => 'Impossible d\'enregistrer la remise.', + 'Couldn’t save email.' => 'Impossible d\'enregistrer l\'e-mail.', + 'Couldn’t save gateway.' => 'Impossible d’enregistrer le portail.', + 'Couldn’t save inventory location.' => 'Impossible d\'enregistrer l\'emplacement de l\'inventaire.', + 'Couldn’t save line item status.' => 'Impossible d\'enregistrer le statut de l\'article.', + 'Couldn’t save order fields.' => 'Impossible d’enregistrer les champs de commande.', + 'Couldn’t save order status.' => 'Impossible d\'enregistrer le statut de commande.', + 'Couldn’t save order.' => 'Impossible d\'enregistrer la commande.', + 'Couldn’t save product type.' => 'Impossible d\'enregistrer le type de produit.', + 'Couldn’t save sale.' => 'Impossible d\'enregistrer la promotion.', + 'Couldn’t save settings.' => 'Impossible d\'enregistrer les paramètres.', + 'Couldn’t save shipping category.' => 'Nous n\'avons pas pu enregistrer cette catégorie de livraison.', + 'Couldn’t save shipping method.' => 'Impossible d\'enregistrer le mode de livraison.', + 'Couldn’t save shipping rule.' => 'Impossible d\'enregistrer la règle de livraison.', + 'Couldn’t save shipping zone.' => 'Impossible d\'enregistrer la zone de livraison.', + 'Couldn’t save store.' => 'Impossible d\'enregistrer la boutique.', + 'Couldn’t save subscription fields.' => 'Impossible d’enregistrer les champs d\'abonnement.', + 'Couldn’t save subscription plan.' => 'Impossible d’enregistrer l’abonnement.', + 'Couldn’t save subscription.' => 'Impossible d’enregistrer l’abonnement.', + 'Couldn’t save tax category.' => 'Impossible d\'enregistrer la catégorie de taxe.', + 'Couldn’t save tax rate.' => 'Impossible d\'enregistrer le taux de taxe.', + 'Couldn’t save tax zone.' => 'Impossible d\'enregistrer la zone de taxe.', + 'Couldn’t save transfer fields.' => 'Impossible d’enregistrer les champs de transfert.', + 'Couldn’t update catalog pricing rule statuses.' => 'Impossible de mettre à jour le statut des règles de tarification du catalogue.', + 'Couldn’t update status.' => 'Impossible de mettre à jour l\'état.', + 'Couldn’t updated sales status.' => 'Impossible de mettre à jour l\'état des ventes.', + 'Country Code of Origin' => 'Code du pays d\'origine', + 'Country List' => 'Liste des pays', + 'Country not allowed.' => 'Pays non autorisé.', + 'Country' => 'Pays', + 'Coupon Code' => 'Code promotionnel', + 'Coupon can not apply discount to this order due to address mismatch.' => 'Le coupon ne peut pas être utilisé pour appliquer une réduction à cette commande, car l\'adresse ne correspond pas.', + 'Coupon can not apply discount to this order due to customer mismatch.' => 'Le coupon ne peut pas être utilisé pour appliquer une réduction à cette commande, car le client ne correspond pas.', + 'Coupon can not apply discount to this order.' => 'Le coupon ne peut pas être utilisé pour appliquer une réduction à cette commande.', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'Le code promotionnel « {code} » est déjà utilisé par la réduction « {name} ».', + 'Coupon codes cannot be blank.' => 'Les codes de coupons ne peuvent pas être vides.', + 'Coupon codes must be unique.' => 'Les codes de coupons doivent être uniques.', + 'Coupon format is required and must contain at least one `#`.' => 'Le format du coupon est requis et doit contenir au moins un « # ».', + 'Coupon not valid.' => 'Coupon invalide.', + 'Coupon removed: {explanation}' => 'Coupon supprimé : {explanation}', + 'Coupons' => 'Coupons', + 'Craft Commerce - Administration' => 'Craft Commerce - Administration', + 'Craft Commerce - Inventory' => 'Craft Commerce - Inventaire', + 'Craft Commerce - Orders' => 'Craft Commerce - Commandes', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce - Type de produit - {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce - Abonnements', + 'Create a Discount' => 'Créer une remise', + 'Create a Subscription Plan' => 'Créer un abonnement', + 'Create a new PDF' => 'Créer un nouveau PDF', + 'Create a new catalog pricing rule' => 'Créer une nouvelle règle de tarification du catalogue', + 'Create a new currency' => 'Créer une nouvelle devise', + 'Create a new email' => 'Créer un nouvel e-mail', + 'Create a new gateway' => 'Créer un nouveau portail', + 'Create a new line item status' => 'Créer un nouveau statut d\'article', + 'Create a new order status' => 'Créer un nouveau statut de commande', + 'Create a new product type' => 'Créer un nouveau type de produit', + 'Create a new sale' => 'Créer une nouvelle promotion', + 'Create a new shipping category' => 'Créer une nouvelle catégorie de livraison', + 'Create a new shipping method' => 'Créer un nouveau mode de livraison', + 'Create a new shipping rule' => 'Créer une nouvelle règle de livraison', + 'Create a new tax category' => 'Créer une nouvelle catégorie de taxe', + 'Create a new tax rate' => 'Créer un nouveau taux de taxe', + 'Create a product type' => 'Créer un type de produit', + 'Create a shipping zone' => 'Créer une zone de livraison', + 'Create a tax zone' => 'Créer une nouvelle zone de taxe', + 'Create catalog pricing rules' => 'Créer des règles de tarification du catalogue', + 'Create customer: “{email}”' => 'Créer le client : « {email} »', + 'Create discounts' => 'Créer des remises', + 'Create discount…' => 'Créer une remise…', + 'Create rules that allow this discount to match the order.' => 'Créez des règles qui permettent à cette remise de correspondre à la commande.', + 'Create rules that allow this discount to match the order’s billing address.' => 'Créez des règles qui permettent à cette remise de correspondre à l\'adresse de facturation de la commande.', + 'Create rules that allow this discount to match the order’s customer.' => 'Créez des règles qui permettent à cette remise de correspondre au client de la commande.', + 'Create rules that allow this discount to match the order’s shipping address.' => 'Créez des règles qui permettent à cette remise de correspondre à l\'adresse d\'expédition de la commande.', + 'Create rules that allow this gateway to match the billing address.' => 'Créez des règles qui permettent à ce portail de faire correspondre l\'adresse de facturation.', + 'Create rules that allow this gateway to match the order.' => 'Créez des règles qui permettent à ce portail de correspondre à la commande.', + 'Create rules that allow this gateway to match the shipping address.' => 'Créez des règles qui permettent à ce portail de faire correspondre l\'adresse de livraison.', + 'Create sales' => 'Créer des promotions', + 'Create sale…' => 'Créer une promotion…', + 'Created' => 'Créé', + 'Credit Card Payment Type' => 'Type de paiement par carte de crédit', + 'Currency Code' => 'Code monétaire', + 'Currency saved.' => 'Devise enregistrée.', + 'Currency' => 'Devise', + 'Current' => 'Actuel', + 'Custom 1' => 'Personnalisé 1', + 'Custom 2' => 'Personnalisé 2', + 'Custom 3' => 'Personnalisé 3', + 'Custom 4' => 'Personnalisé 4', + 'Custom' => 'Personnalisé', + 'Customer Enabled?' => 'Activé pour le client ?', + 'Customer ID is required.' => 'Un ID client est obligatoire.', + 'Customer Note' => 'Note client ', + 'Customer Notices' => 'Avis aux clients', + 'Customer data' => 'Données de clients', + 'Customer' => 'Client', + 'Damaged' => 'Endommagé', + 'Data shown might be outdated.' => 'Les données présentées peuvent être obsolètes.', + 'Date Authorized' => 'Date d\'autorisation', + 'Date Created' => 'Date de création', + 'Date First Paid' => 'Date du premier paiement', + 'Date Ordered' => 'Date de la commande', + 'Date Paid' => 'Date du paiement', + 'Date Updated' => 'Date de mise à jour', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'Date à partir de laquelle la règle de tarification du catalogue sera active. Laissez l\'espace vide si vous voulez que la date de début ne soit pas définie', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'Date à partir de laquelle la remise sera active. Laisser vide si vous voulez que la date de départ ne soit pas définie.', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'Date à partir de laquelle la promotion sera active. Laisser vide si vous voulez que la date de départ ne soit pas définie.', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'Date à laquelle la règle de tarification du catalogue sera terminée. Laissez l\'espace vide si vous voulez que la date de fin ne soit pas définie', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'Date à laquelle la remise ne sera plus effective. Laisser vide si vous voulez que la date de fin ne soit pas définie', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'Date à laquelle la promotion sera terminée. Laisser vide si vous voulez que la date de fin ne soit pas définie.', + 'Date' => 'Date', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'Par défaut - Permet au prix d\'être négatif si les remises sont supérieures à la valeur de la commande.', + 'Default Category' => 'Catégorie par défaut', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'Vue par défaut du panneau de contrôle de Commerce. Si l\'utilisateur n\'a pas la permission, il se rabattra sur un emplacement auquel il peut accéder.', + 'Default Order PDF' => 'PDF de commande par défaut', + 'Default Per Item Rate' => 'Frais par article par défaut', + 'Default Percentage Rate' => 'Frais en pourcentage par défaut', + 'Default Status?' => 'Statut par défaut ?', + 'Default View' => 'Vue par défaut', + 'Default Weight Rate' => 'Frais par poids par défaut', + 'Default Zone' => 'Zone par défaut ', + 'Default status?' => 'Statut par défaut ?', + 'Default to this tax zone when no billing address is set' => 'Définir cette zone fiscale comme zone par défaut en l’absence d’adresse de facturation', + 'Default to this tax zone when no shipping address is set' => 'Utiliser par défaut cette zone de taxe lorsqu\'aucune adresse de livraison n\'est définie', + 'Default variant updated.' => 'Variante par défaut mise à jour.', + 'Default' => 'Par défaut', + 'Default?' => 'Par défaut ?', + 'Delete catalog pricing rules' => 'Supprimer les règles de tarification du catalogue', + 'Delete discounts' => 'Supprimer les remises', + 'Delete orders' => 'Supprimer les commandes', + 'Delete sales' => 'Supprimer les promotions', + 'Delete' => 'Supprimer', + 'Deleting the {location} location.' => 'Suppression de l\'emplacement {location}.', + 'Describe this rule.' => 'Décrire cette règle.', + 'Describe this shipping zone.' => 'Décrire cette zone de livraison.', + 'Describe this tax zone.' => 'Décrire cette zone de taxe.', + 'Description' => 'Description', + 'Destination Inventory Location' => 'Emplacement de l\'inventaire de destination', + 'Destination' => 'Destination', + 'Details' => 'Détails', + 'Dimension Unit' => 'Unité de mesure', + 'Dimensions' => 'Dimensions', + 'Disabled' => 'Désactivé', + 'Disallow' => 'Refuser', + 'Discount all line items' => 'Faire une réduction sur tous les articles', + 'Discount description.' => 'Description de la remise', + 'Discount is not allowed for the order' => 'La réduction n\'est pas autorisée pour cette commande', + 'Discount is out of date.' => 'La remise est échue.', + 'Discount saved.' => 'Remise enregistrée.', + 'Discount the matching items only' => 'Ne faire de remise que sur les articles correspondants', + 'Discount use has reached its limit.' => 'L’utilisation de la remise a atteint son plafond.', + 'Discount' => 'Remise', + 'Discounted Item Subtotal' => 'Sous-total des articles à prix réduit', + 'Discounted Items' => 'Articles en réduction', + 'Discounts deleted.' => 'Rabais supprimés.', + 'Discounts reordered.' => 'Remises réordonnées.', + 'Discounts updated.' => 'Remises mises à jour.', + 'Discounts' => 'Remises', + 'Disqualify with valid business tax ID?' => 'Disqualifier avec un numéro fiscal d\'entreprise valide ?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'Ne pas appliquer d’autres ventes correspondantes après l’application de cette vente.', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => 'Ne pas appliquer ce taux si l\'adresse de la commande comporte l\'un des numéros de taxe professionnelle valides sélectionnés.', + 'Do not attach a PDF to this email' => 'Ne pas attacher de PDF à cet e-mail', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'Ne pas recalculer la commande (Numéro : {orderNumber}) si des erreurs sont présentes.', + 'Donation can not be zero.' => 'Un don ne peut pas être nul.', + 'Donation needs to be an amount.' => 'Le don doit être un montant.', + 'Donation settings saved.' => 'Paramètres de don enregistrés.', + 'Donation' => 'Don', + 'Donations' => 'Dons', + 'Done' => 'Terminé', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'Ne pas appliquer de réductions supplémentaires à cette commande si cette réduction est elle-même appliquée', + 'Download PDF' => 'Télécharger le PDF', + 'Download PDF…' => 'Télécharger le PDF…', + 'Download Type' => 'Type de téléchargement', + 'Download' => 'Télécharger', + 'Draft' => 'Brouillon', + 'Dummy gateway payment failed.' => 'Le paiement de la passerelle factice a échoué.', + 'Duplicate options exist' => 'Il y a des options en double', + 'Duration' => 'Durée', + 'EU VAT ID' => 'N° TVA DE L\'UE', + 'Edit address' => 'Éditer l\'adresse', + 'Edit adjustments' => 'Modifier les ajustements', + 'Edit catalog pricing rules' => 'Modifier les règles de tarification du catalogue', + 'Edit discounts' => 'Modifier les remises', + 'Edit options' => 'Modifier les options', + 'Edit orders' => 'Modifier les commandes', + 'Edit sales' => 'Modifier les promotions', + 'Edit' => 'Modifier', + 'Effect' => 'Effet', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'Soit (par défaut) - Le champ de relation est dans le champ achetable ou la catégorie', + 'Either way' => 'Dans tous les cas', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'Erreur de génération de PDF d\'e-mail pour l\'e-mail « {email} ». Commande : « {order} ». Erreur de modèle PDF : « {message} » {file} : {line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'Il n’existe pas de template PDF d’e-mail à l’emplacement « {templatePath} » pour l’e-mail « {email} ». Commande : « {order} ».', + 'Email Subject' => 'Objet de l\'email', + 'Email error. No email address found for order. Order: “{order}”' => 'Erreur d\'e-mail. Aucune adresse e-mail n\'a été trouvée pour cette commande. Commande : « {order} »', + 'Email is not enabled.' => 'L\'e-mail n\'est pas activé.', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Comme il n’existe pas de modèle d’e-mail en texte brut à l’emplacement « {templatePath} », le chemin « {templateParsedPath} » a donc été généré pour l’e-mail « {email} ». Commande : « {order} ».', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle d\'e-mail en texte brut « {email} ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle d\'e-mail pour l\'e-mail « {email} » dans « Chemin du modèle ». Commande : « {order} ». Erreur de modèles : « {message} » {file} : {line}', + 'Email required to make payments on a completed order.' => 'E-mail requis pour effectuer des paiements sur une commande finalisée.', + 'Email saved.' => 'E-mail enregistré.', + 'Email sent' => 'E-mail envoyé', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Comme il n’existe pas de modèle d’e-mail à l’emplacement « {templatePath} », le chemin « {templateParsedPath} » a donc été généré pour l’e-mail « {email} ». Commande : « {order} ».', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle d\'e-mail personnalisé « {email} » dans « À : » « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle d\'e-mail pour l\'e-mail {email} dans « Cci : ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle d\'e-mail pour l\'e-mail {email} dans « CC : ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle d\'e-mail pour l\'e-mail {email} dans « Répondre à : ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle d\'e-mail pour l\'e-mail {email} dans « Objet : ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle d\'e-mail « {email} ». Commande : « {order} ». Erreur de modèle : « {message} » {file} : {line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erreur d\'analyse du modèle d\'e-mail pour l\'e-mail « {email} » dans « Chemin du modèle ». Commande : « {order} ». Erreur de modèles : « {message} » {file} : {line}', + 'Email unavailable.' => 'E-mail indisponible.', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => 'L\'e-mail « {email} » n\'a pu être envoyé pour la commande « {order} ». Erreur : {error} {file} : {line}', + 'Email “{email}” for order {order} was cancelled.' => 'L\'e-mail « {email} » pour la commande « {order} » a été annulé.', + 'Email' => 'E-mail', + 'Emails' => 'E-mails', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'Activer si ce taux doit être intégré au prix de l\'objet imposable au lieu d\'ajouter un coût à la commande.', + 'Enable structure for products of this type' => 'Activer la structure pour les produits de ce type', + 'Enable this discount' => 'Activer cette remise', + 'Enable this rule' => 'Activer cette règle', + 'Enable this sale' => 'Activer cette promotion', + 'Enable this shipping method on the front end' => 'Activer ce mode de livraison sur le site web', + 'Enable this shipping rule' => 'Activer cette règle de livraison', + 'Enable this tax rate' => 'Activer ce taux de taxe', + 'Enabled for customers to select during checkout?' => 'Activé pour une sélection par les clients lors du paiement ?', + 'Enabled for customers to select?' => 'Possibilité de sélection par les clients ?', + 'Enabled' => 'Activé', + 'Enabled?' => 'Actif ?', + 'End Date' => 'Date de fin', + 'Enter SKU' => 'Entrer le code article interne', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'Saisir un nom convivial pour ce taux d\'imposition, qui sera utilisé dans le panneau de configuration.', + 'Enter a percentage like {ex1} or {ex2}.' => 'Entrer un pourcentage comme {ex1} ou {ex2}.', + 'Enter coupon code' => 'Entrer le code du coupon', + 'Enter reference' => 'Entrer la référence', + 'Error refunding transaction: {transactionHash}' => 'Erreur lors du remboursement de la transaction : {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'Chaque nouveau point de vente doit être affecté à au moins un site.', + 'Everywhere' => 'Partout', + 'Example' => 'Exemple', + 'Exclude this discount for products that are already on promotion' => 'Exclure cette remise pour les produits déjà en promotion', + 'Expired Link' => 'Lien expiré', + 'Expired' => 'A expiré', + 'Expiry Date' => 'Date d\'échéance', + 'Expiry date' => 'Date d’expiration', + 'Expiry' => 'Expiration', + 'Failed to receive transfer: {error}' => 'Échec de la réception du transfert : {error}', + 'Failed to send email. Please try again.' => 'Échec de l\'envoi de l\'e-mail. Veuillez réessayer.', + 'Failed to start' => 'Échec du démarrage', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => 'Échec de la mise à jour {num, plural, =1{du statut de la commande} other{des statuts des commandes}}.', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => 'Échec de la mise à jour du statut de {num, plural, =1{la commande} other{des commandes}}.', + 'Feet (ft)' => 'Pieds (ft)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'Les conditions de filtrage qui décrivent pour quelles commandes cette règle est applicable. Entrez 0 pour ignorer une condition.', + 'First Name' => 'Prénom', + 'Flat Amount Off Order' => 'Montant fixe de remise sur la commande', + 'Flat Order Discount Amount Off' => 'Montant de la remise forfaitaire sur la commande', + 'Free Order Payment Strategy' => 'Stratégie de paiement des commandes gratuites', + 'Free Shipping' => 'Livraison gratuite', + 'Free orders are processed by the payment gateway' => 'Les commandes gratuites sont traitées par le portail de paiement', + 'Free orders complete immediately' => 'Les commandes gratuites s\'exécutent immédiatement', + 'Free shipping can only be for whole order or matching items, not both.' => 'La livraison gratuite ne peut concerner que l\'ensemble de la commande ou les articles correspondants, pas les deux.', + 'From Name' => 'Nom de l\'expéditeur', + 'Fulfill' => 'Réaliser', + 'Fulfilled' => 'Réalisé', + 'Fulfillment' => 'Réalisation', + 'Full Name' => 'Nom complet', + 'Gateway Code' => 'Code portail', + 'Gateway Message' => 'Message du portail', + 'Gateway Reference' => 'Référence de portail', + 'Gateway Response' => 'Réponse du portail', + 'Gateway doesn’t support authorize' => 'La passerelle de paiement ne supporte pas l\'autorisation', + 'Gateway doesn’t support partial refunds.' => 'Le portail ne prend pas en charge les remboursements partiels.', + 'Gateway doesn’t support purchase' => 'La passerelle de paiement ne supporte pas l\'achat', + 'Gateway doesn’t support refunds.' => 'Le portail ne prend pas en charge les remboursements.', + 'Gateway saved.' => 'Portail enregistré.', + 'Gateway' => 'Passerelle de paiement', + 'Gateways reordered.' => 'Portails réordonnés.', + 'Gateways' => 'Portails', + 'General Settings' => 'Paramètres généraux', + 'General' => 'Général', + 'Generate' => 'Générer', + 'Generated Coupon Format' => 'Format des coupons générés', + 'Grams (g)' => 'Grammes (g)', + 'Groups for which this sale will be applicable to.' => 'Groupes auxquels cette promotion s’appliquera.', + 'HTML Email Template Path' => 'Chemin du modèle d\'email HTML', + 'Handle' => 'Traiter', + 'Harmonized System Code' => 'Code du système harmonisé', + 'Has Admin Notices' => 'Contient des avis de l\'administrateur', + 'Has Emails?' => 'A des emails ?', + 'Has Free Shipping' => 'Possède la livraison gratuite', + 'Has Orders' => 'Comprend des commandes', + 'Has Purchasable' => 'Comprend des articles achetables', + 'Has Variants?' => 'Possède des variantes ?', + 'Height ({unit})' => 'Hauteur ({unit})', + 'Height' => 'Hauteur', + 'Hide snapshot' => 'Masquer l\'instantané', + 'History' => 'Historique', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'Combien de temps (en secondes) un lien de téléchargement PDF doit rester valide avant d\'expirer. La valeur par défaut est 86 400 (24 heures).', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => 'Le nombre de fois qu\'une adresse email donnée peut utiliser cette remise. Cela s\'applique à toutes les commandes précédentes, passées comme invité ou comme utilisateur. Mettez zéro (0) pour une utilisation illimitée par les invités ou les utilisateurs enregistrés.', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => 'Combien de fois un utilisateur est autorisé à utiliser cette remise. Si cette valeur est différente de zéro, la remise ne sera disponible que pour les utilisateurs connectés.', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'Le nombre maximal d\'utilisations de cette remise par des invités ou des utilisateurs connectés. Mettez cette valeur à zéro pour permettre une utilisation illimitée.', + 'How products should be labeled within the control panel.' => 'Comment les produits doivent être étiquetés dans le panneau de contrôle.', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'La relation entre les biens à acheter et les catégories, qui détermine les articles correspondants. Voir [Terminologie relations]({link}).', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'La façon dont ce produit sera décrit sur le poste d\'une commande. Vous pouvez inclure des tags qui décrivent des propriétés comme {ex1} ou {ex2}', + 'How this shipping method will be referred to in templates and forms.' => 'La façon dont vous allez faire référence à ce mode de livraison dans les modèles et formulaires.', + 'How variants should be labeled within the control panel.' => 'Comment les variantes doivent être étiquetées dans le panneau de contrôle.', + 'How you’ll refer to this PDF in the templates.' => 'La façon dont vous allez faire référence à ce PDF dans les modèles.', + 'How you’ll refer to this product type in the templates.' => 'La façon dont vous allez faire référence à ce type de produit dans les modèles.', + 'How you’ll refer to this shipping category in the templates.' => 'La façon dont vous vous référerez à cette catégorie de livraison dans les modèles.', + 'How you’ll refer to this status in the templates.' => 'La façon dont vous allez faire référence à ce statut dans les modèles.', + 'How you’ll refer to this subscription plan in the templates.' => 'Indique comment vous allez faire référence à cet abonnement dans les templates.', + 'How you’ll refer to this tax category in the templates.' => 'La façon dont vous allez faire référence à cette catégorie de taxe dans les modèles.', + 'ID' => 'Identifiant', + 'IP Address' => 'Adresse IP', + 'If disabled, this PDF will not be available or sent with emails.' => 'S\'il est désactivé, ce PDF ne sera pas disponible ou envoyé avec des e-mails.', + 'If disabled, this email will not send.' => 'S’il est désactivé, cet email ne sera pas envoyé.', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => 'Si cette option est activée et que ce tarif ne correspond pas à la commande, le taux sera supprimé du prix de l\'article dans le panier.', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'Si configuré sur Autoriser Uniquement, vous devrez collecter les règlements manuellement avant que les fonds ne soient transférés sur votre compte. La passerelle de paiement doit supporter l\'option sélectionnée.', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => 'Si vous choisissez le pourcentage « de réduction sur l\'article en promotion », cela inclura le « montant par article » ainsi que toute autre promotion appliquée avant celle-ci.', + 'Ignore Promotions?' => 'Ignorer les promotions ?', + 'Ignore previous matching sales if this sale matches.' => 'Ignorer les ventes correspondantes précédentes si cette vente correspond.', + 'Ignore promotional prices when this discount is applied to matching line items' => 'Ignorer les prix promotionnels lorsque cette remise est appliquée aux articles correspondants', + 'Inactive Carts' => 'Paniers inactifs', + 'Inches (in)' => 'Pouces (in)', + 'Include built-in line item tax.' => 'Inclure la taxe intégrée sur le type d\'article.', + 'Include in price?' => 'Inclure dans le prix ?', + 'Include line item discounts.' => 'Inclure les rabais par type d\'article.', + 'Include line item shipping costs.' => 'Inclure les coûts d\'envoi par type d\'article.', + 'Include separate line item tax.' => 'Inclure une ligne distincte pour la taxe par type d\'article.', + 'Included in price?' => 'Inclus dans le prix ?', + 'Included' => 'Inclus', + 'Incoming transfer from Transfer ID: ' => 'Transfert entrant à partir de l\'ID de transfert : ', + 'Incoming' => 'Entrant', + 'Info' => 'Info', + 'Information linked?' => 'Des informations sont-elles associées ?', + 'Information' => 'Informations', + 'Invalid JSON' => 'JSON invalide', + 'Invalid Order ID' => 'ID de commande invalide', + 'Invalid VAT ID.' => 'ID TVA invalide.', + 'Invalid condition syntax' => 'Syntaxe conditionnelle invalide', + 'Invalid email.' => 'E-mail invalide.', + 'Invalid formula syntax' => 'Syntaxe de formule invalide', + 'Invalid gateway: {value}' => 'Portail non valide : {value}', + 'Invalid inventory movements.' => 'Mouvements d\'inventaire non valides.', + 'Invalid order condition syntax.' => 'Syntaxe conditionnelle de commande invalide.', + 'Invalid payment or order. Please review.' => 'Paiement ou commande non valide. Veuillez vérifier votre saisie.', + 'Invalid payment source ID: {value}' => 'ID de la source de paiement non valide : {value}', + 'Invalid store.' => 'Magasin non valide.', + 'Invalid user.' => 'Utilisateur non valide.', + 'Inventory Item' => 'Article d\'inventaire', + 'Inventory Location' => 'Emplacement de l\'inventaire', + 'Inventory Locations' => 'Emplacements de l\'inventaire', + 'Inventory Tracked' => 'Inventaire suivi', + 'Inventory Transfers' => 'Transferts d\'inventaire', + 'Inventory could not be set.' => 'L\'inventaire n\'a pas pu être établi.', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => 'L\'emplacement de l\'inventaire a un stock validé, la commande ou les commandes doivent d\'abord être exécutées.', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => 'L\'emplacement de l\'inventaire a un stock entrant, le ou les transferts doivent d\'abord être effectués.', + 'Inventory location is already deactivated.' => 'L\'emplacement de l\'inventaire est déjà désactivé.', + 'Inventory location saved.' => 'Emplacement de l\'inventaire enregistré.', + 'Inventory locations not saved.' => 'Emplacements de l\'inventaire non enregistrés.', + 'Inventory movement could not be saved.' => 'Le mouvement de l\'inventaire n\'a pas pu être enregistré.', + 'Inventory movement saved.' => 'Mouvement d\'inventaire enregistré.', + 'Inventory updated.' => 'Inventaire mis à jour.', + 'Inventory was not updated.' => 'L\'inventaire n\'a pas été mis à jour.', + 'Inventory' => 'Inventaire', + 'Invoice amount' => 'Montant de la facture', + 'Invoice date' => 'Date de la facture', + 'Is Promotable' => 'Peut être promu', + 'Is Promotional Price?' => 'S\'agit-il d\'un prix promotionnel ?', + 'Is Shippable' => 'Peut être expédié', + 'Is Taxable' => 'Peut être taxé', + 'Item Rates' => 'Taux de l\'article', + 'Item Subtotal' => 'Sous-total de l\'article', + 'Item Total' => 'Total de l\'article', + 'Item' => 'Article', + 'Items' => 'Articles', + 'Kilograms (kg)' => 'Kilogrammes (kg)', + 'Label' => 'Étiquette', + 'Landscape' => 'Paysage', + 'Language' => 'Langue', + 'Last Name' => 'Nom de famille', + 'Last Updated' => 'Dernière mise à jour', + 'Leave a category rate override blank to use the rate from above.' => 'Laissez un taux de catégorie vide pour utiliser le taux ci-dessus.', + 'Leave blank for unlimited uses.' => 'Laisser vide pour une utilisation illimitée.', + 'Leave blank if products don’t have URLs' => 'Laissez la zone vide si les produits n’ont pas d’URL', + 'Leave gateway subscription as-is' => 'Laisser l\'abonnement au portail tel quel', + 'Length ({unit})' => 'Longueur ({unit})', + 'Length' => 'Longueur', + 'Let each product choose which sites it should be saved to' => 'Laissez chaque produit choisir dans quels sites ils devront être enregistrées', + 'Limit which orders this discount applies to based on its line items.' => 'Limiter les commandes auxquelles cette remise s\'applique en fonction de leurs articles.', + 'Limit which purchasables this sale applies to.' => 'Limiter les produits achetables auxquels cette promotion s\'applique.', + 'Limit' => 'Limite', + 'Line Item Statuses' => 'Statuts de l\'article', + 'Line Item' => 'Article de ligne', + 'Line Items' => 'Articles de ligne', + 'Line item price (minus discounts)' => 'Prix de l\'article (moins les remises)', + 'Line item shipping cost' => 'Frais de livraison de l’article', + 'Line item statuses reordered.' => 'Articles réordonnés.', + 'Link Duration' => 'Durée du lien', + 'Link Sent' => 'Lien envoyé', + 'Link to a product' => 'Lien vers un produit', + 'Link to a variant' => 'Lien vers une variante', + 'Link' => 'Lien', + 'Live' => 'Live', + 'Location' => 'Emplacement', + 'Locations that should be available for previewing products in this product type.' => 'Emplacements à proposer pour la prévisualisation des produits de ce type de produit.', + 'MM' => 'MM', + 'Make a payment' => 'Effectuer un paiement', + 'Make this the primary store' => 'En faire le magasin principal', + 'Manage Inventory' => 'Gérer l\'inventaire', + 'Manage donation settings' => 'Gérer les paramètres de don', + 'Manage general store settings' => 'Gérer les paramètres généraux du magasin', + 'Manage inventory locations' => 'Gérer les emplacements de l\'inventaire', + 'Manage inventory stock levels' => 'Gérer les niveaux de l\'inventaire', + 'Manage inventory transfers' => 'Gérer les transferts d\'inventaire', + 'Manage orders' => 'Gérez les commandes', + 'Manage payment currencies' => 'Gérer les devises de paiement', + 'Manage promotions' => 'Gérez les promotions', + 'Manage shipping' => 'Gérer l\'expédition', + 'Manage store settings' => 'Gérer les paramètres du magasin', + 'Manage subscription plans' => 'Gérer les abonnements', + 'Manage subscription' => 'Gérer l’abonnement', + 'Manage subscriptions' => 'Gérer les abonnements', + 'Manage taxes' => 'Gérer les taxes', + 'Manage' => 'Gérer', + 'Mark as Pending' => 'Marquer comme en attente', + 'Mark as completed' => 'Marquer comme terminé', + 'Match Billing Address' => 'Faire correspondre l\'adresse de facturation', + 'Match Customer' => 'Faire correspondre le client', + 'Match Order' => 'Faire correspondre la commande', + 'Match Orders' => 'Faire correspondre les commandes', + 'Match Product' => 'Faire correspondre le produit', + 'Match Purchasable' => 'Faire correspondre les produits achetables', + 'Match Shipping Address' => 'Faire correspondre l\'adresse de livraison', + 'Match Variant' => 'Faire correspondre la variante', + 'Matching Items' => 'Articles correspondants', + 'Max Qty' => 'Qté max.', + 'Max Uses' => 'Nombre max d\'utilisations', + 'Max Variants' => 'Variantes max.', + 'Max quantity must greater than min.' => 'La quantité maximale doit être supérieure à min.', + 'Maximum Purchase Quantity' => 'Quantité maximum d\'achat', + 'Maximum Total Shipping Cost' => 'Coût total maximum de la livraison', + 'Maximum allowed quantity' => 'Quantité maximale autorisée', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'Nombre maximum d\'articles correspondants qui peuvent être commandés pour que cette réduction soit appliquée. La valeur zéro indique que ce critère n\'est pas pris en compte.', + 'Maximum order quantity for this item is {num}.' => 'La quantité maximale de commande pour cet article est {num}.', + 'Message' => 'Message', + 'Meters (m)' => 'Mètres (m)', + 'Millimeters (mm)' => 'Millimètres (mm)', + 'Min Qty' => 'Qté min.', + 'Min quantity must be less than max.' => 'La quantité minimale doit être inférieure à max.', + 'Minimum Purchase Quantity' => 'Quantité minimum d\'achat', + 'Minimum Total Price Strategy' => 'Stratégie de prix minimum', + 'Minimum Total Shipping Cost' => 'Coût total minimum de la livraison', + 'Minimum allowed quantity' => 'Quantité minimale autorisée', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'Nombre minimum d\'articles correspondants qui doivent être commandés pour que cette réduction puisse s\'appliquer.', + 'Minimum order quantity for this item is {num}.' => 'La quantité minimale de commande pour cet article est {num}.', + 'Missing Gateway' => 'Portail manquant', + 'Missing a default inventory location.' => 'Il manque un emplacement d\'inventaire par défaut.', + 'Move Inventory' => 'Déplacer l\'inventaire', + 'Move To' => 'Déplacer vers', + 'Move {qty} from {fromType} to {toType}' => 'Déplacer {qty} de {fromType} vers {toType}', + 'Move' => 'Déplacer', + 'Movement from deactivated inventory location' => 'Mouvement à partir d\'un emplacement d\'inventaire désactivé', + 'Movement' => 'Mouvement', + 'Must have at least one variant.' => 'Doit avoir au moins une variante.', + 'Name Field' => 'Champ de nom', + 'Name' => 'Nom', + 'New Customer' => 'Nouveau client', + 'New Customers' => 'Nouveaux clients', + 'New Order' => 'Nouvelle commande', + 'New PDF' => 'Nouveau PDF', + 'New address' => 'Nouvelle adresse', + 'New catalog pricing rule' => 'Nouvelle règle de tarification du catalogue', + 'New currency' => 'Nouvelle devise', + 'New discount' => 'Nouvelle remise', + 'New email' => 'Nouvel email', + 'New gateway' => 'Nouveau portail', + 'New line item status' => 'Nouveau statut d\'article', + 'New line items get this status by default when the order is completed' => 'Les nouveaux articles obtiennent ce statut par défaut lorsque la commande est terminée', + 'New location' => 'Nouvel emplacement', + 'New order status' => 'Nouveau statut de commande', + 'New orders get this status by default' => 'Statut par défaut des nouvelles commandes', + 'New product type' => 'Nouveau type de produit', + 'New product' => 'Nouveau produit', + 'New product, choose a type' => 'Nouveau produit, choisissez un type', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => 'Les nouveaux produits passent par défaut dans la première catégorie fiscale disponible. Si aucune n\'est disponible, cette catégorie sera utilisée.', + 'New sale' => 'Nouvelle promotion', + 'New shipping category' => 'Nouvelle catégorie de livraison', + 'New shipping method' => 'Nouveau mode de livraison', + 'New shipping rule' => 'Nouvelle règle de livraison', + 'New shipping zone' => 'Nouvelle zone de livraison', + 'New subscription plan' => 'Nouvel abonnement', + 'New tax category' => 'Nouvelle catégorie de taxe', + 'New tax rate' => 'Nouveau taux de taxe', + 'New tax zone' => 'Nouvelle zone de taxe', + 'New transfer' => 'Nouveau transfert', + 'New {productType} product' => 'Nouveau produit {productType}', + 'New' => 'Nouveau', + 'Next payment' => 'Prochain paiement', + 'No Address' => 'Aucune adresse', + 'No PDFs exist yet.' => 'Il n\'existe pas encore de PDF.', + 'No access given to any specific store management features.' => 'Aucun accès n\'est donné à des fonctions spécifiques de gestion de magasin.', + 'No additional payment currencies exist yet.' => 'Il n\'existe pas encore de devise pour les paiements supplémentaires.', + 'No address' => 'Aucune adresse', + 'No billing address' => 'Aucune adresse de facturation', + 'No catalog pricing rule exists with the ID “{id}”' => 'Aucune règle de tarification du catalogue n\'existe avec l\'ID « {id} »', + 'No catalog pricing rules exist yet.' => 'Il n\'existe pas encore de règles de tarification du catalogue.', + 'No currency exists with the ID “{id}”' => 'Il n\'existe aucune devise avec l\'identifiant « {id} »', + 'No customer email address exists on this cart.' => 'Aucune adresse e-mail de client n\'existe dans ce panier.', + 'No description' => 'Aucune description', + 'No discount exists with the ID “{id}”' => 'Il n\'existe aucune remise avec l\'identifiant « {id} »', + 'No discounts exist yet.' => 'Il n\'existe pas encore de remise.', + 'No donation amount supplied.' => 'Aucun montant de don fourni.', + 'No emails exist yet.' => 'Il n\'existe pas encore d\'email.', + 'No inventory changes made.' => 'Aucune modification d\'inventaire n\'a été effectuée.', + 'No inventory found.' => 'Aucun inventaire n\'a été trouvé.', + 'No inventory movements made.' => 'Aucun mouvement d\'inventaire n\'a été effectué.', + 'No inventory transactions for this location.' => 'Aucune transaction d\'inventaire pour cet emplacement.', + 'No new customer selected.' => 'Aucun nouveau client sélectionné.', + 'No order history exists with the ID “{id}”' => 'Il n\'existe aucun historique de commande avec l\'identifiant « {id} »', + 'No order status history items will exist until the cart becomes an order.' => 'Il n’y aura aucun élément d’historique du statut de la commande jusqu’à ce que le panier devienne une commande.', + 'No payment source exists with the ID “{id}”' => 'Aucune source de paiement n’existe avec l’ID « {id} »', + 'No private Note.' => 'Aucune note privée.', + 'No product available.' => 'Aucun produit disponible.', + 'No product types exist yet.' => 'Il n\'existe pas encore de type de produit.', + 'No purchasable available.' => 'Aucun achetable disponible.', + 'No sale exists with the ID “{id}”' => 'Il n\'existe aucune promotion avec l\'identifiant « {id} »', + 'No sales exist yet.' => 'Il n\'existe pas encore de promotion.', + 'No shipping address' => 'Aucune adresse de livraison', + 'No shipping category exists with the ID “{id}”' => 'Il n\'existe pas de catégorie de livraison possédant l\'identifiant « {id} »', + 'No shipping method exists with the ID “{id}”' => 'Il n\'existe pas de mode de livraison avec l\'identifiant « {id} »', + 'No shipping rule exists with the ID “{id}”' => 'Il n\'existe pas de règle de livraison avec l\'identifiant « {id} »', + 'No shipping rules exist yet.' => 'Il n\'y a pas encore de règle de livraison.', + 'No shipping zone exists with the ID “{id}”' => 'Aucune zone de livraison ne porte l\'identifiant « {id} »', + 'No stats available.' => 'Aucune statistique disponible.', + 'No subscription plan exists with the ID “{id}”' => 'Aucun abonnement n’existe avec l’ID « {id} »', + 'No subscription plans exist yet.' => 'Il n’existe pas encore d’abonnement.', + 'No tax category exists with the ID “{id}”' => 'Il n\'existe aucune catégorie de taxe avec l\'identifiant « {id} »', + 'No tax rate exists with the ID “{id}”' => 'Il n\'existe pas de taux de taxe avec l\'identifiant « {id} »', + 'No tax zone exists with the ID “{id}”' => 'Il n\'existe pas de zone de taxe avec l\'identifiant « {id} »', + 'No transactions exist.' => 'Aucune transaction existante.', + 'No user authenticated.' => 'Aucun utilisateur authentifié.', + 'No' => 'Non', + 'None on hand' => 'Aucun à disposition', + 'None' => 'Aucun', + 'Not a valid address type' => 'N\'est pas un type d\'adresse valide', + 'Not a valid credit card number.' => 'Numéro de carte non valide.', + 'Not all SKUs are unique.' => 'Tous les numéros d’articles (SKU) ne sont pas uniques.', + 'Note' => 'Remarque', + 'Notes' => 'Notes', + 'Number of Coupons' => 'Nombre de coupons', + 'Number' => 'Numéro', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => 'Parmi les sites activés ci-dessus, sur quels sites les produits de ce type de produit doivent-ils être enregistrées ?', + 'On Hand' => 'Disponible', + 'Only allow this gateway to be used for zero value orders?' => 'Autoriser l’utilisation de ce portail uniquement pour les commandes de valeur nulle ?', + 'Only match certain purchasables…' => 'Ne faire correspondre que certains produits achetables…', + 'Only match purchasables related to…' => 'Ne faire correspondre que les produits achetables liés à…', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => 'Seules les commandes ayant les statuts suivants seront incluses. Laissez ce champ vide pour inclure tous les statuts.', + 'Only save product to the site they were created in' => 'N’enregistrer les produits que sur le site où ils ont été créés', + 'Options' => 'Options', + 'Order Condition Formula' => 'Formule de la condition de commande', + 'Order Description Format' => 'Format de la description de la commande', + 'Order Details' => 'Détails de la commande', + 'Order Fields' => 'Champs de commande', + 'Order PDF Download Link' => 'Lien de téléchargement du PDF de la commande', + 'Order PDF Filename Format' => 'Format de nom de fichier PDF de commandes', + 'Order Reference Number Format' => 'Format du numéro de référence de la commande', + 'Order Settings' => 'Paramètres de commande', + 'Order Site' => 'Site de commande', + 'Order Status description.' => 'Description du statut de la commande.', + 'Order Status' => 'Statut de commande', + 'Order Statuses' => 'Statuts de la commande', + 'Order can not be empty.' => 'La commande ne peut pas être vide.', + 'Order count' => 'Nombre de commandes', + 'Order customer data removed.' => 'Données des clients supprimées des commandes.', + 'Order deleted.' => 'Commande supprimée.', + 'Order fields saved.' => 'Champs commandes enregistrés.', + 'Order not found.' => 'Commande non trouvée.', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => 'Le solde de paiement de la commande est {outstandingBalanceAsCurrency}. Il s\'agit du montant maximum facturé.', + 'Order recalculated.' => 'Commande recalculée.', + 'Order status saved.' => 'Statut de commande enregistré.', + 'Order statuses reordered.' => 'Statuts des commandes réordonnés.', + 'Order total shipping cost' => 'Coût total de livraison', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => 'Prix total taxable de la commande (sous-total des articles individuels + total des remises + total des frais de livraison)', + 'Order' => 'Commande', + 'Orders (Legacy)' => 'Commandes (Legacy)', + 'Orders deleted.' => 'Commandes supprimées.', + 'Orders not restored.' => 'Commandes non restaurées.', + 'Orders restored.' => 'Commandes restaurées.', + 'Orders' => 'Commandes', + 'Organization Name' => 'Nom de l\'organisation', + 'Organization Tax ID' => 'ID fiscal de l\'organisation', + 'Origin and destination cannot be the same.' => 'L\'origine et la destination ne peuvent pas être les mêmes.', + 'Origin' => 'Origine', + 'Original Price' => 'Prix d’origine', + 'Original price' => 'Prix d\'origine', + 'Original promotional price' => 'Prix promotionnel d\'origine', + 'Other Languages' => 'Autres langues', + 'Other countries' => 'Autres pays', + 'Outgoing transfer from Transfer ID: ' => 'Transfert sortant à partir de l\'ID de transfert : ', + 'Overpaid' => 'Surpayé', + 'Overrides previous?' => 'Remplace la précédente ?', + 'PDF Attachment' => 'Pièce jointe PDF', + 'PDF Template Path' => 'Chemin du template PDF', + 'PDF saved.' => 'PDF enregistré.', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'PDF et e-mails', + 'PDFs' => 'PDF', + 'Paid Amount' => 'Montant payé', + 'Paid Status' => 'Statut « Payé »', + 'Paid' => 'Payé', + 'Paper Orientation' => 'Orientation du papier', + 'Paper Size' => 'Format du papier', + 'Partial payment not allowed.' => 'Paiement partiel non autorisé.', + 'Partial' => 'Partiellement', + 'Past year' => 'L\'année dernière', + 'Past {num} days' => '{num} derniers jours', + 'Pay {amount} of {currency} on the order.' => 'Payer {amount} {currency} à la commande.', + 'Pay' => 'Payer', + 'Payment Amount' => 'Montant du paiement', + 'Payment Currencies' => 'Devises du paiement', + 'Payment Gateway' => 'Portail de paiement', + 'Payment Method' => 'Moyen de paiement', + 'Payment error: {message}' => 'Erreur de paiement : {message}', + 'Payment method issue' => 'Problème de moyen de paiement', + 'Payment source created.' => 'Source de paiement créée.', + 'Payment source deleted.' => 'Source de paiement supprimée.', + 'Payments' => 'Paiements', + 'Pending' => 'En cours', + 'Per Email Address Discount Limit' => 'Limite de réductions par adresse e-mail', + 'Per Item Amount Off' => 'Montant de réduction par article', + 'Per Item Discount' => 'Remise par article', + 'Per Item Percentage Off' => 'Montant de réduction par article', + 'Per Item Rate' => 'Frais par article', + 'Per User Discount Limit' => 'Limite de réductions par utilisateur', + 'Percentage Rate' => 'Frais en pourcentage', + 'Phone (Alt)' => 'Téléphone (Alt)', + 'Phone' => 'Téléphone', + 'Pick a plan' => 'Choisir un abonnement', + 'Plain Text Email Template Path' => 'Chemin du modèle d\'e-mail texte brut', + 'Plan' => 'Abonnement', + 'Plans reordered.' => 'Plans réordonnés.', + 'Portrait' => 'Portrait', + 'Post Date' => 'Date de publication', + 'Postal Code Formula' => 'Formule du code postal', + 'Pounds (lb)' => 'Livres (lb)', + 'Preview' => 'Aperçu', + 'Previous Status' => 'Statut précédent', + 'Price' => 'Prix', + 'Prices' => 'Prix', + 'Pricing Rules' => 'Règles de tarification', + 'Pricing jobs are currently running.' => 'Des travaux de tarification sont actuellement en cours.', + 'Pricing' => 'Tarification', + 'Primary Billing Address' => 'Adresse de facturation principale', + 'Primary Shipping Address' => 'Adresse de livraison principale', + 'Primary payment source updated.' => 'Source de paiement principale mise à jour.', + 'Primary' => 'Principal', + 'Private Note' => 'Note privée', + 'Product Fields' => 'Champs produit', + 'Product ID is required.' => 'Un ID produit est requis.', + 'Product Template' => 'Modèle du produit', + 'Product Title Format' => 'Format du titre de produit', + 'Product Type' => 'Type de produit', + 'Product Types' => 'Types de produits', + 'Product URI Format' => 'Format d\'URI produit', + 'Product Variant' => 'Variante du produit', + 'Product Variants' => 'Variantes du produit', + 'Product type saved.' => 'Type de produit enregistré.', + 'Product type settings' => 'Paramètres du type de produit', + 'Product' => 'Produit', + 'Products and Variants deleted.' => 'Produits et variantes supprimées.', + 'Products not restored.' => 'Produits non restaurés.', + 'Products restored.' => 'Produits restaurés.', + 'Products' => 'Produits', + 'Promotable' => 'Pouvant être promu', + 'Promotable?' => 'Peut-être mis en promotion ?', + 'Promotional Amount' => 'Montant promotionnel', + 'Promotional Price' => 'Prix promotionnel', + 'Purchasable Categories' => 'Catégories de produits achetables', + 'Purchasable ID and Sale ID are required.' => 'Un ID achetable et de vente est requis.', + 'Purchasable ID is required.' => 'Un ID achetable est requis.', + 'Purchasable Type' => 'Type de produit achetable', + 'Purchasable' => 'Produit achetable', + 'Purchase (Authorize and Capture Immediately)' => 'Acheter (autoriser et collecter immédiatement)', + 'Purchase Total' => 'Total des achats', + 'Qty' => 'Qté', + 'Quality Control' => 'Contrôle de la qualité', + 'Quantity' => 'Quantité', + 'Rate' => 'Taux', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => 'Réaffecter {numOrders, plural, =1{la commande} other{les commandes}}', + 'Recalculate order' => 'Recalculer la commande', + 'Receive Inventory' => 'Recevoir l\'inventaire', + 'Receive Transfer' => 'Recevoir le transfert', + 'Receive' => 'Recevoir', + 'Received' => 'Reçu', + 'Recent Orders' => 'Commandes récentes', + 'Recipient' => 'Destinataire', + 'Recover Cart' => 'Récupérer le panier', + 'Reduce price' => 'Diminuer le prix', + 'Reduce the price by a fixed amount' => 'Diminuer le prix d’un montant fixe', + 'Reduce the price by a percentage of the original price' => 'Diminuer le prix d’un certain pourcentage du prix d’origine', + 'Reference' => 'Référence', + 'Refresh payment history' => 'Actualiser l\'historique de paiement', + 'Refund note' => 'Note de remboursement', + 'Refund payment' => 'Rembourser le paiement', + 'Refund' => 'Rembourser', + 'Reject' => 'Rejeter', + 'Rejected' => 'Rejeté', + 'Relationship Type' => 'Type de relation', + 'Removable included tax rates are only allowed for the default tax zone.' => 'Les taux de taxes inclus supprimables sont uniquement autorisés pour la zone de taxes par défaut.', + 'Remove address' => 'Supprimer l\'adresse', + 'Remove all shipping costs from the order' => 'Retirer tous les coûts de livraison de la commande', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => 'Retirer l\'association au client et à l\'adresse e-mail {numOrders, plural, =1{de la commande} other{des commandes}}. Vous pouvez également sélectionner d\'autres données de clients à supprimer ci-dessous', + 'Remove customer data' => 'Supprimer les données de clients', + 'Remove from price?' => 'Retirer du prix ?', + 'Remove shipping costs for matching items only' => 'Retirer les coûts d\'expédition pour les articles correspondants seulement', + 'Remove the included tax when a valid organization tax ID is present?' => 'Supprimer la taxe incluse lorsqu\'un identifiant fiscal d\'organisation valide est présent ?', + 'Remove' => 'Supprimer', + 'Removed' => 'Supprimé', + 'Repeat Customers' => 'Clients réguliers', + 'Reply To' => 'Répondre à', + 'Require Billing Address At Checkout' => 'Exiger l\'adresse de facturation lors du passage de la commande', + 'Require Coupon Code' => 'Exiger un code promotionnel', + 'Require Shipping Address At Checkout' => 'Exiger l\'adresse d\'expédition lors du passage de la commande', + 'Require Shipping Method Selection At Checkout' => 'Exiger le choix du mode d\'expédition au moment du passage de la commande', + 'Require' => 'Demander', + 'Reserved' => 'Réservé', + 'Reset usage' => 'Réinitialiser l\'utilisation', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'Restreignez la remise aux commandes pour lesquelles le client a acheté une valeur totale minimale d\'articles correspondants.', + 'Revenue Options' => 'Options de revenus', + 'Revenue' => 'Recettes', + 'Rule' => 'Règle', + 'Rules reordered.' => 'Règles réordonnées.', + 'SKU' => 'Code article interne (SKU)', + 'Safety' => 'Sécurité', + 'Sale Price' => 'Prix de vente', + 'Sale description.' => 'Description de la promotion.', + 'Sale reordered.' => 'Promotion réordonnée.', + 'Sale saved.' => 'Promotion enregistrée.', + 'Sale' => 'Promotion/solde', + 'Sales deleted.' => 'Ventes supprimées.', + 'Sales updated.' => 'Ventes mises à jour.', + 'Sales' => 'Promos & Soldes', + 'Save and continue editing' => 'Enregistrer et continuer l\'édition', + 'Save and return to all orders' => 'Enregistrer et revenir à toutes les commandes', + 'Save and set rules' => 'Enregistrer et définir les règles', + 'Save as a new rule' => 'Enregistrer en tant que nouvelle règle', + 'Save product to all sites enabled for this product type' => 'Enregistrer les produits sur tous les sites activés pour ce type de produit', + 'Save product to other sites in the same site group' => 'Enregistrer le produit sur les autres sites du même groupe de sites', + 'Save product to other sites with the same language' => 'Enregistrer le produit sur les autres sites ayant la même langue', + 'Save' => 'Enregistrer', + 'Search customer…' => 'Rechercher un client…', + 'Search inventory' => 'Rechercher dans l\'inventaire', + 'Search or enter customer email…' => 'Rechercher ou saisir un e-mail client…', + 'Search…' => 'Rechercher…', + 'See Orders' => 'Voir les commandes', + 'Select a gateway' => 'Sélectionner un portail', + 'Select a tax category.' => 'Choisir une catégorie de taxe.', + 'Select a tax zone. If empty, this rate will match anywhere.' => 'Sélectionner une zone fiscale. Si aucune zone n\'est sélectionnée, ce taux s\'appliquera partout.', + 'Select address' => 'Sélectionner l\'adresse', + 'Select an item' => 'Sélectionner un article', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'Sélectionnez la façon dont la règle de tarification du catalogue sera appliquée aux produits achetables.', + 'Select how the sale will be applied to the purchasable(s).' => 'Indiquez comment la promotion sera appliquée aux articles en vente.', + 'Select product type' => 'Sélectionner le type de produit', + 'Select the emails that will be sent when transitioning to this status.' => 'Sélectionnez les emails qui seront envoyés lors du basculement sur ce statut.', + 'Select what this rate should be applied to.' => 'Sélectionner ce à quoi ce taux doit être appliqué.', + 'Send Email' => 'Envoyer l\'e-mail', + 'Send to custom recipient' => 'Envoyer à un destinataire spécifique', + 'Send to the customer' => 'Envoyer au client', + 'Set Quantity' => 'Définir la quantité', + 'Set default category' => 'Définir la catégorie par défaut', + 'Set default variant' => 'Définir la variante par défaut', + 'Set or Adjust' => 'Définir ou ajuster', + 'Set price' => 'Définir le prix', + 'Set status' => 'Définir le statut', + 'Set the price to a flat amount' => 'Définir le prix comme un montant fixe', + 'Set the price to a percentage of the original price' => 'Définir le prix comme un pourcentage du prix original', + 'Set the sale price to a flat amount' => 'Définir le prix soldé comme un montant fixe', + 'Set the sale price to a percentage of the original price' => 'Définir le prix soldé comme un pourcentage du prix original', + 'Set to' => 'Définir sur', + 'Settings saved.' => 'Paramètres enregistrés.', + 'Settings' => 'Paramètres', + 'Share cart…' => 'Partager le panier…', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => 'Expédition - Le coût minimum est le coût d\'expédition, si le prix de la commande est inférieur au coût d\'expédition.', + 'Shipping Address Zone' => 'Zone d\'adresse de livraison', + 'Shipping Address' => 'Adresse de livraison', + 'Shipping Business Name' => 'Nom commercial pour la livraison', + 'Shipping Categories' => 'Catégories de livraison', + 'Shipping Category Conditions' => 'Conditions pour les différentes catégories de livraison', + 'Shipping Category' => 'Catégorie de livraison', + 'Shipping First Name' => 'Nom pour la livraison', + 'Shipping Full Name' => 'Nom complet pour la livraison', + 'Shipping Last Name' => 'Nom pour la livraison', + 'Shipping Method' => 'Mode de livraison', + 'Shipping Methods' => 'Modes de livraison', + 'Shipping Rule' => 'Règle de livraison', + 'Shipping Zones' => 'Zones de livraison', + 'Shipping address required.' => 'Adresse de livraison requise.', + 'Shipping categories deleted.' => 'Catégories de livraison supprimées.', + 'Shipping category saved.' => 'Catégorie de livraison enregistrée.', + 'Shipping category updated.' => 'Catégorie de livraison mise à jour.', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'Les frais d\'expédition sont ajoutés à l\'ensemble de la commande avant l\'application des taux de pourcentage, d\'article et de poids. Réglez à zéro pour désactiver ce taux. Toute la règle, y compris ce taux de base, ne correspondra pas et ne s\'appliquera pas si le panier ne contient que des articles non expédiables comme des produits numériques.', + 'Shipping method saved.' => 'Mode de livraison enregistré.', + 'Shipping methods and rules deleted.' => 'Modes et règles de livraison supprimés.', + 'Shipping methods updated.' => 'Modes de livraison mis à jour.', + 'Shipping rule saved.' => 'Règle de livraison enregistrée.', + 'Shipping zone saved.' => 'Zone de livraison enregistrée.', + 'Shipping' => 'Livraison', + 'Short Number' => 'Numéro court', + 'Show Chart?' => 'Afficher le graphique ?', + 'Show Order Count?' => 'Afficher le nombre de commandes ?', + 'Show all prices' => 'Afficher tous les prix', + 'Show archived gateways' => 'Afficher les portails archivés', + 'Show order count line on chart.' => 'Afficher la ligne de décompte des commandes sur le graphique.', + 'Show related sales' => 'Afficher les ventes connexes', + 'Show rule details' => 'Afficher les détails de la règle', + 'Show the Dimensions and Weight fields for products of this type' => 'Afficher les champs Dimensions et Poids pour les produits de ce type', + 'Show the Title field for products' => 'Afficher le champ Titre pour les produits', + 'Show the Title field for variants' => 'Afficher le champ Titre pour les variantes', + 'Signed In' => 'Connexion effectuée', + 'Site Languages' => 'Langues du site', + 'Site store mapping saved.' => 'Mappage du site du magasin enregistré.', + 'Sites' => 'Sites', + 'Slug' => 'Identificateur', + 'Snapshot' => 'Instantané', + 'Snapshots' => 'Instantanés', + 'Some orders restored.' => 'Certaines commandes ont été restaurées.', + 'Some products restored.' => 'Certains produits ont été restaurés.', + 'Some variants restored.' => 'Certaines variantes ont été restaurées.', + 'Something changed with the order before payment, please review your order and submit payment again.' => 'Quelque chose a changé dans la commande avant le paiement, merci de la vérifier puis de soumettre de nouveau votre règlement.', + 'Sorry, no matching options.' => 'Désolé, aucune option ne correspond.', + 'Source - The purchasable relationship field is on the category' => 'Source - Le champ de relation du produit achetable est sur la catégorie', + 'Source' => 'Source', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Précisez une condition Twig déterminant si la réduction doit s\'appliquer à une commande donnée. (La commande peut être référencée via la variable `order`.)', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Précisez une condition Twig déterminant si la règle d\'expédition doit s\'appliquer à une commande donnée. (La commande peut être référencée via la variable `order`.)', + 'Start Date' => 'Date de début', + 'State' => 'État/Province', + 'Status Email Address' => 'Adresse email du statut', + 'Status Emails' => 'Emails de statut', + 'Status History' => 'Historique du statut', + 'Status Updated.' => 'Statut mis à jour.', + 'Status change message' => 'Message de changement de statut', + 'Status' => 'Statut', + 'Stock' => 'Stock', + 'Stops Processing?' => 'Cela arrête-t-il le traitement ?', + 'Stops subsequent?' => 'Cela arrête-t-il les éléments suivants ?', + 'Store Location' => 'Emplacement des magasins', + 'Store Management' => 'Gestion du magasin', + 'Store Markets' => 'Marchés de la boutique', + 'Store Rule' => 'Règle du magasin', + 'Store saved.' => 'Boutique enregistrée.', + 'Store' => 'Magasin', + 'Stores & Sites' => 'Magasins et sites', + 'Stores' => 'Magasins', + 'Strategy to apply when an order is free or has a zero balance.' => 'Stratégie à appliquer lorsqu\'une commande est gratuite ou a un solde nul.', + 'Strategy to apply when calculating the minimum order price.' => 'Stratégie à employer lors du calcul du prix de la commande minimale.', + 'Subject' => 'Objet', + 'Subscribing user' => 'Utilisateur abonné', + 'Subscription Fields' => 'Champs d’abonnement', + 'Subscription Plans' => 'Abonnements', + 'Subscription Settings' => 'Paramètres d\'abonnement', + 'Subscription cancelled.' => 'Abonnement annulé.', + 'Subscription date' => 'Date d’abonnement', + 'Subscription fields saved.' => 'Champs d’abonnement enregistrés.', + 'Subscription for {user} to {plan} prevented by a plugin.' => 'La souscription de l’utilisateur {user} à l’abonnement {plan} a été empêchée par un plug-in.', + 'Subscription plan saved.' => 'Abonnement enregistré.', + 'Subscription plan' => 'Abonnement', + 'Subscription plans' => 'Abonnements', + 'Subscription reactivated.' => 'Abonnement réactivé.', + 'Subscription reference' => 'Référence de l’abonnement', + 'Subscription started.' => 'Abonnement démarré.', + 'Subscription switched.' => 'Abonnement changé.', + 'Subscription to “{plan}”' => 'Abonnement à « {plan} »', + 'Subscription' => 'Abonnement', + 'Subscriptions on hold' => 'Abonnements en attente', + 'Subscriptions' => 'Abonnements', + 'Suppress emails' => 'Réduire les e-mails', + 'Switch plan' => 'Changer d’abonnement', + 'Switch' => 'Basculer', + 'System' => 'Système', + 'Table Columns' => 'Colonnes du tableau', + 'Target - The category relationship field is on the purchasable' => 'Cible - Le champ de relation de la catégorie est sur l\'achetable', + 'Tax & Shipping' => 'Taxes et expédition', + 'Tax (inc)' => 'Taxe (inc)', + 'Tax Categories' => 'Catégories de taxe', + 'Tax Category' => 'Catégorie de taxe', + 'Tax Rates' => 'Taux de taxe', + 'Tax Zone' => 'Zone de taxe', + 'Tax Zones' => 'Zones de taxe', + 'Tax categories deleted.' => 'Catégories de taxe supprimées.', + 'Tax category saved.' => 'Catégorie de taxe enregistrée.', + 'Tax category updated.' => 'Catégorie de taxe mise à jour.', + 'Tax rate saved.' => 'Taux de taxe enregistré.', + 'Tax rates updated.' => 'Taux de taxe mis à jour.', + 'Tax zone saved.' => 'Zone de taxe enregistrée.', + 'Tax' => 'Taxe', + 'Taxable Subject' => 'Ce qui doit être taxé', + 'Template Path' => 'Chemin du modèle', + 'That handle is already in use' => 'Cet identificateur est déjà utilisé', + 'That handle is already in use.' => 'Cet identificateur est déjà utilisé.', + 'The PDF to attach to this email.' => 'Le PDF à attacher à cet e-mail.', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => 'L\'URL de la page permettant de mettre à jour les détails de facturation d\'un abonnement, ainsi que de gérer l\'authentification 3DS.', + 'The address provided is outside the store’s market.' => 'L\'adresse fournie est en dehors du marché de la boutique.', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => 'Le montant de la remise qui est appliquée à l\'ensemble de la commande. Ce montant est réparti sur les objets dans l\'ordre du prix le plus élevé au prix le plus bas, jusqu\'à épuisement de la remise.', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => 'La remise de base ne peut réduire le prix des articles du panier à zéro, elle ne peut pas rendre la commande négative.', + 'The cart recovery link is invalid. Please request a new one.' => 'Le lien de récupération du panier n\'est pas valide. Veuillez en demander un nouveau.', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => 'Le taux de conversion qui sera utilisé lorsqu\'un montant sera converti dans cette devise. Par exemple, si un article coûte {amount1}, vous obtiendrez le montant de {amount2} dans l\'autre devise si le taux de conversion est de {rate}.', + 'The countries that orders are allowed to be placed from.' => 'Les pays depuis lesquels il est possible de passer une commande.', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'Le coupon « {code} » a dépassé la limite de {limit} utilisations.', + 'The customer for this order has been deleted.' => 'Le client pour cette commande a été supprimé.', + 'The default shipping category is automatically available to all product types.' => 'La catégorie d\'expédition par défaut est automatiquement disponible pour tous les types de produits.', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'La réduction « {name} » a dépassé la limite de {limit} utilisations au total.', + 'The download link has expired. Please request a new one.' => 'Le lien de téléchargement a expiré. Veuillez en demander un nouveau.', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => 'L\'adresse à partir de laquelle les emails de statut de commande sont envoyés. Laisser vide pour utiliser l\'adresse email du système définie dans les Paramètres Généraux de Craft.', + 'The entry that contains the description for this subscription’s plan.' => 'Entrée contenant la description de cet abonnement.', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => 'La remise forfaitaire appliquée à chaque article. Par ex : « 3 » pour 3€ de réduction par article.', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => 'Le format utilisé pour générer de nouveaux coupons, par exemple {example}. Tout caractère « # » sera remplacé par une lettre aléatoire.', + 'The from and to inventory locations must be different.' => 'Les emplacements de départ et de retour de l\'inventaire doivent être différents.', + 'The inventory locations this store uses.' => 'Les emplacements d\'inventaire utilisés par ce magasin.', + 'The item is not enabled for sale.' => 'Cet article n’est pas autorisé à la vente.', + 'The language the order was made in.' => 'La langue dans laquelle la commande a été passée.', + 'The language to be used when this email is rendered.' => 'La langue à utiliser lors de l\'affichage de cet e-mail.', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'Le nombre maximum de niveaux que ce type de produit peut avoir. Laissez vide si cela n\'est pas pertinent.', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => 'Le maximum que le client devra payer pour la livraison. Mettre sur zéro pour désactiver.', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => 'Le minimum que le client devra payer pour la livraison. Mettre sur zéro pour désactiver.', + 'The order is not valid.' => 'La commande est invalide.', + 'The payment gateway that will be used for the subscription plan.' => 'Indique quel portail de paiement sera utilisé pour l’abonnement.', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => 'La valeur du pourcentage de réduction qui doit être appliqué à chaque article, par exemple {ex1} pour une remise de {ex2}. Les pourcentages sont arrondis à 2 décimales.', + 'The previously-selected shipping method is no longer available.' => 'La méthode d\'expédition précédemment sélectionnée n\'est plus disponible.', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Le prix de {description} a augmenté, il est passé de {originalSalePriceAsCurrency} à {newSalePriceAsCurrency}', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Le prix de {description} a baissé, il est passé de {originalSalePriceAsCurrency} à {newSalePriceAsCurrency}', + 'The primary currency cannot be changed after orders are placed.' => 'La devise principale ne peut être modifiée après la validation des commandes.', + 'The purchasable defines the relationship' => 'Le produit achetable définit la relation', + 'The purchasable is related by another element' => 'Le produit achetable est lié par un autre élément', + 'The recipient of the email. Twig code can be used here.' => 'Le destinataire de l\'e-mail. Du code Twig peut être utilisé ici.', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => 'L\'adresse e-mail de réponse. Laissez vide pour la réponse normale à l\'expéditeur de l\'e-mail. Du code Twig peut être utilisé ici.', + 'The site the order was made in.' => 'Le site sur lequel la commande a été passée.', + 'The site to be used when this email is rendered.' => 'Le site à utiliser lors de l\'affichage de cet e-mail.', + 'The subject line of the email. Twig code can be used here.' => 'La ligne d\'objet de l\'e-mail. Du code Twig peut être utilisé ici.', + 'The template that the PDF should be generated from.' => 'Le modèle à partir duquel le PDF doit être généré.', + 'The template to be used for HTML emails.' => 'Le modèle utilisé pour les emails HTML', + 'The template to be used for plain text emails. Twig code can be used here.' => 'Le modèle à utiliser pour les e-mails en texte brut. Du code Twig peut être utilisé ici.', + 'The template to use when a product’s URL is requested.' => 'Le modèle à utiliser lorsque l\'URL d\'un produit est requise.', + 'The total number of order adjustments changed.' => 'Le nombre total de modifications de commandes qui ont été modifiées.', + 'The total price of the order changed.' => 'Le montant total de la commande qui a été modifié.', + 'The total quantity of items within the order changed.' => 'Le nombre total d\'articles dans la commande qui ont été modifiés.', + 'The unique SKU of the donation purchasable.' => 'L\'unique référence du don pouvant être acheté.', + 'The unit of measurement that should be used when specifying product dimensions.' => 'L\'unité de mesure qui doit être utilisée lorsque vous indiquez les dimensions du produits.', + 'The unit of measurement that should be used when specifying product weights.' => 'L\'unité de mesure qui doit être utilisée lorsque vous indiquez le poids du produit.', + 'The webhook URL for this gateway.' => 'L\'URL du webhook pour cette passerelle.', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => 'Le nom de l\'expéditeur utilisé lors de l\'envoi d\'emails de statut de commande. Laissez vide pour utiliser le nom de l\'expéditeur défini dans les Paramètres Généraux de Craft.', + 'There are errors on the order' => 'Il y a des erreurs dans la commande', + 'There are only {num} “{description}” items left in stock.' => 'Il reste seulement {num} « {description} » articles en stock.', + 'There aren’t any product types to select yet.' => 'Il n\'y a pas encore de types de produits à sélectionner.', + 'There is no gateway or payment source available for use with this order.' => 'Aucun portail ou source de paiement disponible pour cette commande.', + 'There is no gateway selected that supports payment sources.' => 'Aucun portail prenant en charge les sources de paiement n’a été sélectionné.', + 'There is no shipping method selected for this order.' => 'Aucun mode de livraison sélectionné pour cette commande.', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'Cette URL chargera le panier dans la session de l\'utilisateur, ce qui en fera le panier actif.', + 'This action is not allowed for the current user.' => 'Cette action n\'est pas autorisée pour l\'utilisateur actuel.', + 'This category will be used as the default for all purchasables in this store.' => 'Cette catégorie sera utilisée par défaut pour tous les articles pouvant être achetés dans ce magasin.', + 'This coupon is for registered users and limited to {limit} uses.' => 'Ce coupon est limité à {limit} utilisation(s) pour les utilisateurs inscrits.', + 'This coupon is limited to {limit} uses.' => 'Ce coupon est limité à {limit} utilisation(s).', + 'This coupon requires an email address.' => 'Ce rabais nécessite une adresse e-mail.', + 'This gateway does not support that functionality.' => 'Ce portail ne prend pas en charge cette fonctionnalité.', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'Cela est outrepassé par le paramètre de configuration {setting} dans `config/{file}.php`.', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'Il s’agit de l’adresse physique de votre magasin. Elle peut être utilisée par différents plug-ins pour déterminer des éléments tels que le mode de livraison ou les taxes applicables. Elle peut également figurer sur les reçus au format PDF.', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'Ceci est le PDF par défaut qui sera rendu lors de la demande du PDF de commande.', + 'This is the last location for the {store} store.' => 'Il s\'agit du dernier emplacement pour le magasin {store}.', + 'This month' => 'Ce mois-ci', + 'This order has unsaved changes.' => 'Cette commande a des modifications non enregistrées.', + 'This week' => 'Cette semaine', + 'This year' => 'Cette année', + 'Times Used' => 'Nombre de fois où elle a été utilisée', + 'Title' => 'Titre', + 'To' => 'À', + 'Today' => 'Aujourd’hui', + 'Too many variants for this product.' => 'Trop de variantes pour ce produit.', + 'Top Customers by Average Order' => 'Meilleurs clients par commande moyenne', + 'Top Customers by Total Revenue' => 'Meilleurs clients par recette totale', + 'Top Customers' => 'Meilleurs clients', + 'Top Product Types by Qty Sold' => 'Meilleurs types de produits par Qté vendue', + 'Top Product Types by Revenue' => 'Meilleurs types de produits par recettes', + 'Top Product Types' => 'Meilleurs type de produit', + 'Top Products by Qty Sold' => 'Meilleurs produits par Qté vendue', + 'Top Products by Revenue' => 'Meilleurs produits par recettes', + 'Top Products' => 'Meilleurs produits', + 'Top Purchasables by Qty Sold' => 'Meilleurs achetables par Qté vendue', + 'Top Purchasables by Revenue' => 'Meilleurs achetables par recettes', + 'Top Purchasables' => 'Meilleurs achetables', + 'Total ' => 'Total ', + 'Total Discount Use Limit' => 'Limite d\'utilisation totale des remises', + 'Total Discount' => 'Remise totale', + 'Total Included Tax' => 'Total TTC', + 'Total Orders by Billing Country' => 'Total des commandes par pays de facturation', + 'Total Orders by Country' => 'Total des commandes par pays', + 'Total Orders by Shipping Country' => 'Total des commandes par pays de livraison', + 'Total Orders' => 'Total des commandes', + 'Total Paid' => 'Total payé', + 'Total Price' => 'Montant total', + 'Total Qty' => 'Qté totale', + 'Total Revenue' => 'Total des recettes', + 'Total Shipping' => 'Total des frais de port', + 'Total Tax' => 'Total des taxes', + 'Total Weight' => 'Poids total', + 'Total' => 'Total', + 'Track Inventory' => 'Suivre l\'inventaire', + 'Transaction Hash' => 'Hash de la transaction', + 'Transaction ID' => 'ID de la transaction', + 'Transaction captured successfully: {message}' => 'Transaction capturée avec succès : {message}', + 'Transaction refunded successfully: {message}' => 'Transaction remboursée avec succès : {message}', + 'Transactions' => 'Transactions', + 'Transfer Fields' => 'Champs de transfert', + 'Transfer Items' => 'Articles de transfert', + 'Transfer Settings' => 'Paramètres de transfert', + 'Transfer Status' => 'Statut du transfert', + 'Transfer fields saved.' => 'Champs de transfert enregistrés.', + 'Transfer must have at least one item.' => 'Le transfert doit comporter au moins un article.', + 'Transfer' => 'Transférer', + 'Transfers' => 'Transferts', + 'Trial days credited' => 'Jours d’essai crédités', + 'Trial expiration' => 'Expiration de l\'essai', + 'Trial expiry date' => 'Date d’expiration de la version d’essai', + 'Type not in allowed options.' => 'Type non autorisé dans les options.', + 'Type' => 'Type', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => 'Impossible d\'annuler l’abonnement actuellement.', + 'Unable to complete order: another request is already in progress.' => 'Impossible de terminer la commande : une autre demande est déjà en cours.', + 'Unable to find variant.' => 'Impossible de trouver la variante.', + 'Unable to generate coupon codes: {message}' => 'Impossible de générer des codes de réduction : {message}', + 'Unable to make payment at this time.' => 'Impossible d’effectuer le paiement actuellement.', + 'Unable to modify subscription at this time.' => 'Impossible de modifier l’abonnement actuellement.', + 'Unable to reactivate subscription at this time.' => 'Impossible de réactiver l’abonnement actuellement.', + 'Unable to reassign orders.' => 'Impossible de réattribuer les commandes.', + 'Unable to remove order data.' => 'Impossible de supprimer les données de commande.', + 'Unable to retrieve Sale and Purchasable.' => 'Impossible de récupérer les promotions et les achetables.', + 'Unable to retrieve cart.' => 'Impossible de récupérer le panier.', + 'Unable to retrieve customer.' => 'Impossible de récupérer le client.', + 'Unable to retrieve load cart URL' => 'Impossible de récupérer et charger l\'URL du panier', + 'Unable to retrieve payment source.' => 'Impossible de récupérer la source de paiement.', + 'Unable to set default shipping category.' => 'Impossible de définir la catégorie d\'expédition par défaut.', + 'Unable to set default tax category.' => 'Impossible de définir la catégorie de taxe par défaut.', + 'Unable to set primary payment source.' => 'Impossible de définir la source de paiement principale.', + 'Unable to start the subscription. Please check your payment details.' => 'Impossible de démarrer l’abonnement. Veuillez vérifier vos informations de paiement.', + 'Unable to subscribe at this time.' => 'Impossible de souscrire actuellement.', + 'Unable to update cart.' => 'Impossible de mettre à jour le panier.', + 'Unable to validate address.' => 'Impossible de valider l’adresse.', + 'Unit Price' => 'Prix unitaire', + 'Unit price (minus discounts)' => 'Prix unitaire (moins les remises)', + 'Units' => 'Unités', + 'Unpaid' => 'Non payés', + 'Unsubscribe' => 'Se désabonner', + 'Update Address' => 'Mettre à jour lʼadresse', + 'Update Order Status' => 'Mettre à jour le statut de la commande', + 'Update Order Status…' => 'Mise à jour du statut de commande…', + 'Update order' => 'Mettre à jour la commande', + 'Update subscription' => 'Mettre à jour l\'abonnement', + 'Update' => 'Mettre à jour', + 'Updated By' => 'Mis à jour par', + 'Updated committed stock successfully.' => 'Stock validé mis à jour avec succès.', + 'Updated' => 'Mis à jour', + 'Use Billing Address For Tax' => 'Utiliser l\'adresse de facturation pour les taxes', + 'Use as the primary billing address' => 'Utiliser comme adresse de facturation principale', + 'Use as the primary shipping address' => 'Utiliser comme adresse de livraison principale', + 'Used By Tax Rates' => 'Utilisé par le taux d\'imposition', + 'Used by Tax Rates' => 'Utilisé par le taux de taxe', + 'User Groups' => 'Groupes d\'utilisateurs', + 'User not found.' => 'Utilisateur non trouvé.', + 'User' => 'Utilisateur', + 'Uses' => 'Utilisations', + 'Validate Business Tax ID as Vat ID' => 'Valider l\'ID de taxe professionnelle en tant qu\'ID de TVA', + 'Validating condition syntax' => 'Validation de la syntaxe conditionnelle', + 'Validating formula syntax' => 'Validation de la syntaxe de la formule', + 'Variant Fields' => 'Champs variante', + 'Variant Has Untracked Stock' => 'La variante a un stock non suivi', + 'Variant Price' => 'Prix de la variante', + 'Variant SKU' => 'SKU de la variante', + 'Variant Search' => 'Rechercher une variante', + 'Variant Stock' => 'Stock de la variante', + 'Variant Title Format' => 'Format du titre de variante', + 'Variant Tracks Stock' => 'La variante suit le stock', + 'Variant UI Label Format' => 'Format des étiquettes de l\'interface de variantes', + 'Variant has no product.' => 'La variante n\'a pas de produit.', + 'Variants not restored.' => 'Variantes non restaurées.', + 'Variants restored.' => 'Variantes restaurées.', + 'Variants' => 'Variantes', + 'View customer' => 'Voir le client', + 'View order' => 'Afficher la commande', + 'View product type - {productType}' => 'Voir le type de produit - {productType}', + 'View user' => 'Voir l\'utilisateur', + 'View' => 'Voir', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => 'Attention, la suppression de cette devise entraînera l\'arrêt de tous les paiements et remboursements dans cette devise, êtes-vous sûr de vouloir supprimer « {name} » ?', + 'Web' => 'Web', + 'Webhook URL' => 'URL du webhook', + 'Weight ({unit})' => 'Poids ({unit})', + 'Weight Rate' => 'Frais selon le poids', + 'Weight Unit' => 'Unité de poids', + 'Weight' => 'Poids', + 'What product URIs should look like for the site.' => 'À quoi les URIs de produits devraient ressembler pour le site.', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'À quoi devraient ressembler les titres de produits générés automatiquement. Vous pouvez inclure des balises qui produisent des propriétés des produits, comme {ex1} ou {ex2}. Tous les champs personnalisés utilisés doivent être obligatoires.', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'À quoi devraient ressembler les titres de variantes générés automatiquement. Vous pouvez inclure des balises qui produisent des propriétés des variantes, comme {ex1} ou {ex2}. Tous les champs personnalisés utilisés doivent être obligatoires.', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => 'Ce à quoi le nom de fichier PDF de commandes devrait ressembler (sans extension). Vous pouvez inclure des étiquettes qui représentent certaines propriétés de la commande, telles que {ex1} ou {ex2}.', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'À quoi devraient ressembler les codes article internes (SKU) uniques générés automatiquement, lorsqu\'un champ SKU est soumis sans valeur. Vous pouvez inclure des balises qui produisent des propriétés, comme {ex1} ou {ex2}.', + 'What this PDF will be called in the control panel.' => 'Nom de ce PDF dans le panneau de contrôle.', + 'What this catalog pricing rule will be called in the control panel.' => 'Le nom de cette règle de tarification du catalogue dans le panneau de contrôle.', + 'What this discount will be called in the control panel.' => 'Nom de cette remise dans le panneau de contrôle.', + 'What this email will be called in the control panel.' => 'Nom de cet e-mail dans le panneau de configuration.', + 'What this product type will be called in the control panel.' => 'Nom de ce type de produit dans le panneau de contrôle.', + 'What this sale will be called in the control panel.' => 'Nom de cette promotion dans le panneau de contrôle.', + 'What this shipping category will be called in the control panel.' => 'Nom de cette catégorie de livraison dans le panneau de contrôle.', + 'What this shipping rule will be called in the control panel.' => 'Nom de cette règle de livraison dans le panneau de contrôle.', + 'What this shipping zone will be called in the control panel.' => 'Nom de cette zone de livraison dans le panneau de contrôle.', + 'What this status will be called in the control panel.' => 'Nom de ce statut dans le panneau de contrôle.', + 'What this subscription plan will be called in the control panel.' => 'Nom de cet abonnement dans le panneau de configuration.', + 'What this tax category will be called in the control panel.' => 'Nom de cette catégorie de taxe dans le panneau de contrôle.', + 'What this tax zone will be called in the control panel.' => 'Nom de cette zone de taxe dans le panneau de contrôle.', + 'When this discount is applied to an order, which line items should be discounted?' => 'Lorsque cette réduction est appliquée à une commande, quels postes doivent faire l\'objet d\'une réduction ?', + 'Whether the first available shipping method option should be set automatically on carts.' => 'Indique si la première option du mode d\'expédition disponible doit être définie automatiquement dans les paniers.', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'Indique si la source de paiement principale de l\'utilisateur doit être définie automatiquement pour les nouveaux paniers.', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'Indique si les adresses principales de livraison et de facturation de l\'utilisateur doivent être définies automatiquement pour les nouveaux paniers.', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => 'Indique si cette règle de tarification du catalogue doit pouvoir être utilisée, indépendamment d\'autres conditions.', + 'Whether this sale should be available for use, regardless of other conditions.' => 'Indique si cette vente doit être utilisable, indépendamment des autres conditions.', + 'Which data to display in the name column in the results table.' => 'Les données à afficher dans la colonne des noms dans le tableau des résultats.', + 'Which product types should this category be available to?' => 'Dans quels types de produits cette catégorie devrait-elle être offerte ?', + 'Which template should be loaded when a product’s URL is requested.' => 'Quel template devrait être chargé quand l’URL d’un produit est demandée.', + 'Width ({unit})' => 'Largeur ({unit})', + 'Width' => 'Largeur', + 'YYYY' => 'AAAA', + 'Yes' => 'Oui', + 'You are not allowed to add a line item.' => 'Vous n\'avez pas le droit d’ajouter un article.', + 'You currently have no emails configured to select for this status.' => 'Vous n\'avez aucune adresse e-mail actuellement configurée à sélectionner pour ce statut.', + 'You do not have permission to load this cart.' => 'Vous n\'avez pas l\'autorisation de charger ce panier.', + 'You must set up at least one gateway that supports subscriptions first.' => 'Vous devez d’abord définir au moins un portail qui prend en charge les abonnements.', + 'You must be logged in or provide a valid token to load this cart.' => 'Vous devez être connecté ou fournir un jeton valide pour charger ce panier.', + 'You must be signed in to create a payment source.' => 'Vous devez être connecté(e) pour créer une source de paiement.', + 'You must be signed in to set a primary payment source.' => 'Vous devez être connecté(e) pour définir une source de paiement principale.', + 'You must make a payment to complete the order.' => 'Vous devez effectuer un paiement pour terminer la commande.', + 'Your Cart Recovery Link' => 'Lien de récupération de votre panier', + 'Your Order PDF Download Link' => 'Lien de téléchargement du PDF de votre commande', + 'Your order is empty' => 'Votre commande est vide', + 'ZIP file' => 'Fichier ZIP', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'Zéro - Le prix minimum est zéro si les remises sont supérieures à la valeur de la commande.', + 'Zip Code' => 'code postal', + 'all' => 'tous', + 'any' => 'n\'importe quel', + 'average order total' => 'total de commande moyen', + 'billing address' => 'adresse de facturation', + 'donation' => 'don', + 'donations' => 'dons', + 'info' => 'infos', + 'inventory location' => 'emplacement de l\'inventaire', + 'new customers' => 'nouveaux clients', + 'on hand' => 'disponible', + 'only' => 'seulement', + 'order' => 'commande', + 'orders' => 'commandes', + 'price' => 'prix', + 'prices' => 'prix', + 'product variant' => 'variante du produit', + 'product variants' => 'variantes du produit', + 'product' => 'produit', + 'products' => 'produits', + 'repeat customers' => 'clients réguliers', + 'shipping address' => 'adresse de livraison', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'Impossible de définir à la fois shippingSameAsBilling et billingSameAsShipping.', + 'subscription' => 'abonnement', + 'subscriptions' => 'abonnements', + 'to' => 'à', + 'transfer' => 'transférer', + 'transfers' => 'transferts', + '{amount} included' => '{amount} inclut', + '{count} Unfulfilled Orders' => '{count} commandes non réalisées', + '{description} is no longer available.' => '{description} n\'est plus disponible.', + '{description} only has {stock} in stock.' => '{description} n\'a que {stock} unités en stock.', + '{from} to {to}' => '{from} à {to}', + '{name} (Primary)' => '{name} (Primaire)', + '{name} (Trashed)' => '{name} (mis à la corbeille)', + '{name} catalog price' => 'prix de catalogue {name}', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, one {}=1{commande mise à jour} other{commandes mises à jour}}.', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, =1{commande est associée} other{commandes sont associées}} {numUsers, plural, =1{à l\'utilisateur} other{aux utilisateurs}}.', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, =1{abonnement est activé} other{abonnements sont activés}} pour {numUsers, plural, =1{l\'utilisateur} other{les utilisateurs}}.', + '{number} more…' => '{number} de plus…', + '{pct} off the discounted item price' => '{pct} sur le prix remisé de l\'article', + '{pct} off the original item price' => '{pct} sur le prix original de l\'article', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, =1{n\'a pas été assigné} other{n\'ont pas été assignés}} à un site.', + '{total} in total revenue' => '{total} dans les recettes totales', + '{total} orders' => '{total} commandes', + '{total} saleable across {locationCount} location(s)' => '{total} vendables parmi {locationCount} emplacement(s)', + '{uses} uses across {emails} email addresses' => '{uses} utilisations sur {emails} adresses e-mail', + '{uses} uses across {users} users' => '{uses} utilisations pour {users} utilisateurs', + '“{description}” is currently out of stock.' => '« {description} » est actuellement épuisé.', + '“{key}” has invalid JSON' => '« {key} » possède du JSON invalide', +]; diff --git a/lang/it/commerce.php b/lang/it/commerce.php new file mode 100644 index 0000000000..a2d95831cc --- /dev/null +++ b/lang/it/commerce.php @@ -0,0 +1,1423 @@ + '(nuovo prezzo)', + '(of original price)' => '(del prezzo originale)', + '(off original price)' => '(in meno rispetto al prezzo originale)', + 'A cart number must be specified.' => 'È necessario specificare un numero di carrello.', + 'A cart recovery link has been sent to {email}.' => 'Un link per il recupero del carrello è stato inviato all\'indirizzo {email}.', + 'A cart recovery link will be sent to {email}.' => 'Un link per il recupero del carrello sarà inviato all\'indirizzo {email}.', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'Un numero di riferimento di facile consultazione verrà generato in base a questo formato al completamento del carrello e alla sua trasformazione in ordine. Per esempio {ex1} o
{ex2}. Il risultato di questo formato deve essere univoco.', + 'A new download link has been sent to {email}' => 'Un nuovo link di download è stato inviato a {email}', + 'A new download link will be sent to {email}' => 'Un nuovo link di download sarà inviato a {email}', + 'A valid email is required to create a customer.' => 'Per creare un cliente è necessario fornire un\'e-mail valida.', + 'Accept' => 'Accetta', + 'Accepted' => 'Accettato', + 'Actions' => 'Azioni', + 'Active Carts' => 'Carrelli attivi', + 'Active subscriptions' => 'Sottoscrizioni attive', + 'Active' => 'Attivo', + 'Add Address' => 'Aggiungi indirizzo', + 'Add a coupon' => 'Aggiungi un coupon', + 'Add a custom line item' => 'Aggiungi una voce personalizzata', + 'Add a line item' => 'Aggiungi una voce', + 'Add a product' => 'Aggiungi prodotto', + 'Add a variant' => 'Aggiungi variante', + 'Add an adjustment' => 'Aggiungi una rettifica', + 'Add an item' => 'Aggiungi un articolo', + 'Add an option' => 'Aggiungi un\'opzione', + 'Add catalog price' => 'Aggiungi prezzo in catalogo', + 'Add' => 'Aggiungi', + 'Additional Actions' => 'Azioni aggiuntive', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'Destinatari aggiuntivi che dovrebbero ricevere questa e-mail. Qui è possibile utilizzare il codice Twig.', + 'Address 1' => 'Indirizzo 1', + 'Address 2' => 'Indirizzo 2', + 'Address 3' => 'Indirizzo 3', + 'Address Line 1' => 'Indirizzo (linea 1)', + 'Address Line 2' => 'Indirizzo (linea 2)', + 'Address Updated.' => 'Indirizzo aggiornato.', + 'Address copied to user.' => 'Indirizzo copiato su utente.', + 'Address not found.' => 'Indirizzo non trovato.', + 'Adjust Quantity' => 'Rettifica quantità', + 'Adjust by' => 'Regola per', + 'Adjust price when included rate is disqualified?' => 'Rettificare il prezzo quando l\'aliquota inclusa non è valida?', + 'Adjustments' => 'Rettifiche', + 'Admin Notices' => 'Avvisi dell\'amministratore', + 'Administrative Area Code of Origin' => 'Codice dell\'area amministrativa di provenienza', + 'Advanced' => 'Impostazioni avanzate', + 'All Orders' => 'Tutti gli ordini', + 'All Totals' => 'Tutti i totali', + 'All Transfers' => 'Tutti i trasferimenti', + 'All active subscriptions' => 'Tutte le sottoscrizioni attive', + 'All customers' => 'Tutti i clienti', + 'All products' => 'Tutti i prodotti', + 'All variants must have a SKU.' => 'Tutte le varianti devono avere uno SKU.', + 'All' => 'Tutti', + 'Allow Checkout Without Payment' => 'Consenti il checkout senza pagamento', + 'Allow Empty Cart On Checkout' => 'Consenti il carrello vuoto al checkout', + 'Allow Partial Payment On Checkout' => 'Consenti il pagamento parziale al checkout', + 'Allow out of stock purchases' => 'Consenti acquisti fuori stock', + 'Allow' => 'Consenti', + 'Allowed Qty' => 'Qtà consentita', + 'Alternative Phone' => 'N. telefono alternativo', + 'Amount' => 'Importo', + 'An ID must be provided' => 'È necessario fornire un documento d\'identità', + 'An error occurred while generating this PDF.' => 'Si è verificato un errore durante la generazione di questo PDF.', + 'Any' => 'Qualsiasi', + 'Anywhere' => 'Dovunque', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => 'Sei sicuro di voler archiviare il piano di sottoscrizione “{name}”? Questa operazione NON annullerà le sottoscrizioni esistenti.', + 'Are you sure you want to capture this transaction?' => 'Sei sicuro di voler acquisire questa transazione?', + 'Are you sure you want to complete this order?' => 'Sei sicuro di voler completare questo ordine?', + 'Are you sure you want to delete the selected orders?' => 'Sei sicuro di voler eliminare gli ordini selezionati?', + 'Are you sure you want to delete the selected product and its variants?' => 'Sei sicuro di voler eliminare il prodotto selezionato e le relative varianti?', + 'Are you sure you want to delete this shipping rule?' => 'Sei sicuro di voler eliminare questa regola di spedizione?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => 'Sei sicuro di voler eliminare “{name}” e tutti i relativi prodotti? Assicurati di avere un backup del tuo database prima di eseguire questa azione distruttiva.', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => 'Sei sicuro di voler eliminare "{name}"? Tutte le voci con questo stato verranno impostate su nessuno stato.', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'Contrassegnare questo trasferimento come in sospeso? Verrà visualizzato come in arrivo nella destinazione.', + 'Are you sure you want to overwrite the billing address?' => 'Sei sicuro di voler sovrascrivere l\'indirizzo di fatturazione?', + 'Are you sure you want to overwrite the shipping address?' => 'Sei sicuro di voler sovrascrivere l\'indirizzo di spedizione?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'Sei sicuro di voler eliminare definitivamente questo store e tutto ciò che contiene?', + 'Are you sure you want to refund this transaction?' => 'Sei sicuro di voler rimborsare questa transazione?', + 'Are you sure you want to remove this customer?' => 'Sei sicuro di voler rimuovere questo cliente?', + 'Are you sure you want to save this as a new shipping rule?' => 'Sei sicuro di voler salvare questa immissione come nuova regola di spedizione?', + 'Are you sure you want to send email: {name}?' => 'Sei sicuro di voler inviare l\'email: {name}?', + 'At least one site must be enabled for the product type.' => 'Almeno un sito deve essere abilitato per il tipo di prodotto.', + 'Attempted Payments' => 'Tentativi di pagamento', + 'Attention' => 'Attenzione', + 'Authorize Only (Manually Capture)' => 'Autorizza solo (acquisizione manuale)', + 'Auto Set Cart Shipping Method Option' => 'Impostazione automatica del metodo di spedizione del carrello', + 'Auto Set New Cart Addresses' => 'Impostazione automatica dei nuovi indirizzi del carrello', + 'Auto Set Payment Source' => 'Impostazione automatica della fonte di pagamento', + 'Automatic SKU Format' => 'Formato SKU automatico', + 'Available Shipping Categories' => 'Categorie di spedizione disponibili', + 'Available Tax Categories' => 'Categorie fiscali disponibili', + 'Available for purchase' => 'Disponibile all’acquisto', + 'Available for purchase?' => 'Disponibile all’acquisto?', + 'Available inventory for "{description}" has gone below zero.' => 'Le scorte disponibili per “{description}” sono pari a zero.', + 'Available to Product Types' => 'Disponibile per tipi di prodotto', + 'Available' => 'Disponibile', + 'Available?' => 'Disponibile?', + 'Average Order Total' => 'Totale medio degli ordini', + 'Average' => 'Media', + 'BCC’d Recipient' => 'Destinatario in Ccn', + 'Bad Request' => 'Richiesta non valida', + 'Bad address ID.' => 'ID indirizzo non valido.', + 'Bad order ID.' => 'ID ordine non valido.', + 'Base Price' => 'Prezzo base', + 'Base Promotional Price' => 'Prezzo promozionale base', + 'Base Rate' => 'Tasso base', + 'Base' => 'Base', + 'Bcc' => 'Ccn', + 'Billing Address' => 'Indirizzo di fatturazione', + 'Billing Business Name' => 'Nome azienda per la fatturazione', + 'Billing First Name' => 'Nome per la fatturazione', + 'Billing Full Name' => 'Nome completo per la fatturazione', + 'Billing Last Name' => 'Cognome per la fatturazione', + 'Billing address required.' => 'Indirizzo di fatturazione obbligatorio.', + 'Billing detail update URL' => 'URL di aggiornamento dei dettagli di fatturazione', + 'Billing issues' => 'Problemi di fatturazione', + 'Billing' => 'Fatturazione', + 'Both (Line item price + Line item shipping costs)' => 'Entrambi (prezzo per voce + costi di spedizione per voce)', + 'Business ID' => 'ID azienda', + 'Business Name' => 'Nome azienda', + 'Business Tax ID' => 'Partita IVA aziendale', + 'CC’d Recipient' => 'Destinatario in Cc', + 'CVV' => 'CVV', + 'Can be used as an internal reference.' => 'Può essere utilizzato come riferimento interno.', + 'Can not complete payment for missing transaction.' => 'Impossibile completare il pagamento per transazione assente.', + 'Can not create a new order' => 'Impossibile creare un nuovo ordine', + 'Can not find an order to pay.' => 'Impossibile trovare un ordine da pagare.', + 'Can not find enabled email.' => 'Impossibile trovare l\'email abilitata.', + 'Can not find order' => 'Impossibile trovare l\'ordine', + 'Can not find order.' => 'Impossibile trovare l\'ordine.', + 'Can not find the transaction to refund' => 'Impossibile trovare la transazione da rimborsare', + 'Can not move between these inventory types.' => 'Impossibile spostarsi tra questi tipi di inventario.', + 'Can not refund amount greater than the remaining amount' => 'Impossibile rimborsare un importo maggiore rispetto all\'importo rimanente', + 'Cancel subscription' => 'Annulla sottoscrizione', + 'Cancel with gateway now' => 'Annulla ora tramite gateway', + 'Cancel' => 'Annulla', + 'Cancellation date' => 'Data annullamento', + 'Cancellation' => 'Annullamento', + 'Cannot switch plans for this subscription.' => 'Impossibile cambiare piano per questa sottoscrizione.', + 'Can’t preview this email.' => 'Impossibile visualizzare l\'anteprima di questa e-mail.', + 'Capture payment' => 'Acquisisci pagamento', + 'Capture' => 'Acquisisci', + 'Card Holder' => 'Proprietario della carta', + 'Card Number' => 'Numero di carta', + 'Card' => 'Carta', + 'Cart Recovery Link' => 'Link per il recupero del carrello', + 'Cart forgotten.' => 'Carrello dimenticato.', + 'Cart updated.' => 'Carrello aggiornato.', + 'Cart {number}' => 'Carrello {number}', + 'Catalog Pricing Rule' => 'Regola di prezzo del catalogo', + 'Catalog pricing rule description.' => 'Descrizione della regola di prezzo del catalogo.', + 'Catalog pricing rule saved.' => 'Regola di prezzo del catalogo salvata.', + 'Catalog pricing rules deleted.' => 'Regole di prezzo del catalogo eliminate.', + 'Catalog pricing rules updated.' => 'Regole di prezzo del catalogo aggiornate.', + 'Categories Relationship Type' => 'Tipo di rapporto delle categorie', + 'Categories' => 'Categorie', + 'Category Rate Overrides' => 'Ignora tariffa categoria', + 'Centimeters (cm)' => 'Centimetri (cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'Modificare questo valore può influenzare la tua capacità di rimborsare le transazioni esistenti.', + 'Choose a color to represent the order’s status' => 'Scegli un colore per rappresentare lo stato dell\'ordine', + 'Choose a new customer' => 'Scegli un nuovo cliente', + 'Choose adjustment values to include when calculating the product revenue total.' => 'Scegli i valori di rettifica da includere nel calcolo del ricavo totale del prodotto.', + 'Choose the currency’s ISO code.' => 'Scegliere il codice ISO della valuta.', + 'Choose the destination inventory location for the existing on hand stock.' => 'Scegli la sede di destinazione dell\'inventario per le scorte esistenti.', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'Scegli i siti in cui questo tipo di prodotto deve essere disponibile e configura le impostazioni specifiche del sito.', + 'City' => 'Città', + 'Clear counter' => 'Azzera contatore', + 'Clear notices' => 'Cancella notifiche', + 'Close' => 'Chiudi', + 'Code' => 'Codice', + 'Collated PDF' => 'PDF fascicolati', + 'Color' => 'Colore', + 'Commerce Products' => 'Prodotti Commerce', + 'Commerce Settings' => 'Impostazioni Commerce', + 'Commerce Variants' => 'Varianti di Commerce', + 'Commerce email “{email}” could not be sent for order “{order}”.' => 'Impossibile inviare l’email di Commerce “{email}” per l’ordine “{order}”.', + 'Commerce order exports' => 'Esportazioni ordini da Commerce', + 'Commerce' => 'Commerce', + 'Committed' => 'Impegnato', + 'Completed Email' => 'E-mail completa', + 'Completed' => 'Completato', + 'Completing order failed.' => 'Completamento dell\'ordine fallito.', + 'Condition' => 'Condizione', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'Le condizioni vengono confrontate con un ordine prima di esaminare le regole. Ciò è utile se si desidera qualificare in anticipo la disponibilità di un metodo o se esistono condizioni comuni per tutte le regole per questo metodo.', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'Le condizioni vengono confrontate con il cliente dell\'ordine prima di esaminare le regole. Ciò è utile se si desidera qualificare in anticipo la disponibilità di un metodo o se esistono condizioni comuni per tutte le regole per questo metodo.', + 'Conditions' => 'Condizioni', + 'Contains Purchasables' => 'Contiene prodotti disponibili all’acquisto', + 'Control Panel Settings' => 'Impostazioni del pannello di controllo', + 'Control panel' => 'Pannello di controllo', + 'Conversion Rate' => 'Tasso di conversione', + 'Converted Price' => 'Prezzo convertito', + 'Copied!' => 'Copiato!', + 'Copy the URL' => 'Copia l\'URL', + 'Copy to {location}' => 'Copia in {location}', + 'Copy' => 'Copia', + 'Costs' => 'Costi', + 'Could not archive gateway.' => 'Impossibile archiviare il gateway.', + 'Could not cancel “{reference}”.' => 'Impossibile cancellare “{reference}”.', + 'Could not create the payment source.' => 'Impossibile creare la fonte di pagamento.', + 'Could not delete shipping rule' => 'Impossibile eliminare le regole di spedizione', + 'Could not delete shipping zone' => 'Impossibile eliminare la zona di spedizione', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => 'Impossibile eliminare {count, number} {count, plural, one{categoria} other{categorie}} di spedizione.', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => 'Impossibile eliminare {count, number} {count, plural, one{metodo} other{metodi}} e regole di spedizione.', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => 'Impossibile eliminare {count, number} {count, plural, one{categoria} other{categorie}} fiscale/i.', + 'Could not find the email or template.' => 'Non è stato possibile trovare l\'email o il template.', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => 'Impossibile contrassegnare l’ordine {number} come completato. Il salvataggio non è andato a buon fine in fase di completamento dell’ordine con errori: {order}', + 'Could not reactivate “{reference}”.' => 'Impossibile riattivare “{reference}”.', + 'Could not send email' => 'Non è stato possibile inviare l’email', + 'Could not switch “{reference}” to “{plan}”.' => 'Impossibile passare da “{reference}” a “{plan}”.', + 'Could not update orders address.' => 'Non è stato possibile aggiornare gli indirizzi degli ordini.', + 'Couldn’t archive Line Item Status.' => 'Non è stato possibile salvare lo stato della voce.', + 'Couldn’t archive Order Status.' => 'Non è stato possibile archiviare lo stato dell’ordine.', + 'Couldn’t capture transaction.' => 'Non è stato possibile acquisire la transazione.', + 'Couldn’t capture transaction: {message}' => 'Non è stato possibile acquisire la transazione: {message}', + 'Couldn’t delete email.' => 'Impossibile eliminare l\'e-mail.', + 'Couldn’t delete the payment source.' => 'Impossibile eliminare la fonte di pagamento.', + 'Couldn’t get order.' => 'Non è stato possibile recuperare l’ordine.', + 'Couldn’t recalculate order.' => 'Non è stato possibile ricalcolare l’ordine.', + 'Couldn’t refund transaction.' => 'Non è stato possibile rimborsare la transazione.', + 'Couldn’t refund transaction: {message}' => 'Non è stato possibile rimborsare la transazione: {message}', + 'Couldn’t reorder Line Item Statuses.' => 'Non è stato possibile riordinare gli stati delle voci.', + 'Couldn’t reorder Order Statuses.' => 'Non è stato possibile riordinare gli stati ordine.', + 'Couldn’t reorder PDFs.' => 'Impossibile riordinare i PDF.', + 'Couldn’t reorder discounts.' => 'Non è stato possibile riordinare gli sconti.', + 'Couldn’t reorder gateways.' => 'Impossibile riordinare i gateway.', + 'Couldn’t reorder plans.' => 'Non è stato possibile riordinare i piani.', + 'Couldn’t reorder rules.' => 'Impossibile riordinare le regole.', + 'Couldn’t reorder sale.' => 'Impossibile riordinare la vendita promozionale.', + 'Couldn’t reorder sales.' => 'Impossibile riordinare le vendite.', + 'Couldn’t reorder statuses.' => 'Impossibile riordinare gli stati.', + 'Couldn’t reorder stores.' => 'Impossibile riordinare gli store.', + 'Couldn’t save PDF.' => 'Non è stato possibile salvare il PDF.', + 'Couldn’t save catalog pricing rule.' => 'Non è stato possibile salvare la regola di prezzo in catalogo.', + 'Couldn’t save currency.' => 'Non è stato possibile salvare la valuta.', + 'Couldn’t save discount.' => 'Non è stato possibile salvare lo sconto.', + 'Couldn’t save email.' => 'Non è stato possibile salvare l’email.', + 'Couldn’t save gateway.' => 'Impossibile salvare il gateway.', + 'Couldn’t save inventory location.' => 'Impossibile salvare la sede dell\'inventario.', + 'Couldn’t save line item status.' => 'Non è stato possibile salvare lo stato della voce.', + 'Couldn’t save order fields.' => 'Impossibile salvare i campi dell\'ordine.', + 'Couldn’t save order status.' => 'Non è stato possibile salvare lo stato dell’ordine.', + 'Couldn’t save order.' => 'Non è stato possibile salvare l’ordine.', + 'Couldn’t save product type.' => 'Non è stato possibile salvare il tipo di prodotto.', + 'Couldn’t save sale.' => 'Non è stato possibile salvare la vendita promozionale.', + 'Couldn’t save settings.' => 'Non è stato possibile salvare le impostazioni.', + 'Couldn’t save shipping category.' => 'Non è stato possibile salvare la categoria di spedizione.', + 'Couldn’t save shipping method.' => 'Non è stato possibile salvare il metodo di spedizione.', + 'Couldn’t save shipping rule.' => 'Non è stato possibile salvare la regola di spedizione.', + 'Couldn’t save shipping zone.' => 'Non è stato possibile salvare l’area di spedizione.', + 'Couldn’t save store.' => 'Impossibile salvare store.', + 'Couldn’t save subscription fields.' => 'Impossibile salvare i campi di sottoscrizione.', + 'Couldn’t save subscription plan.' => 'Impossibile salvare il piano di sottoscrizione.', + 'Couldn’t save subscription.' => 'Non è stato possibile salvare la sottoscrizione.', + 'Couldn’t save tax category.' => 'Non è stato possibile salvare la categoria fiscale.', + 'Couldn’t save tax rate.' => 'Non è stato possibile salvare l’aliquota fiscale.', + 'Couldn’t save tax zone.' => 'Non è stato possibile salvare la zona fiscale.', + 'Couldn’t save transfer fields.' => 'Impossibile salvare i campi del trasferimento.', + 'Couldn’t update catalog pricing rule statuses.' => 'Non è stato possibile aggiornare le regole di prezzo in catalogo.', + 'Couldn’t update status.' => 'Impossibile aggiornare lo stato.', + 'Couldn’t updated sales status.' => 'Non è stato possibile aggiornare lo stato della vendita promozionale.', + 'Country Code of Origin' => 'Codice del Paese di origine', + 'Country List' => 'Elenco di Paesi', + 'Country not allowed.' => 'Paese non consentito.', + 'Country' => 'Paese', + 'Coupon Code' => 'Codice promozionale', + 'Coupon can not apply discount to this order due to address mismatch.' => 'Impossibile applicare lo sconto a questo ordine tramite il codice promozionale a causa della mancata corrispondenza dell\'indirizzo.', + 'Coupon can not apply discount to this order due to customer mismatch.' => 'Impossibile applicare lo sconto a questo ordine tramite il codice promozionale a causa della mancata corrispondenza del cliente.', + 'Coupon can not apply discount to this order.' => 'Impossibile applicare lo sconto a questo ordine tramite il codice promozionale.', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'Il codice coupon “{code}” è già utilizzato dallo sconto “{name}”.', + 'Coupon codes cannot be blank.' => 'I codici promozionali non possono essere vuoti.', + 'Coupon codes must be unique.' => 'I codici promozionali devono essere univoci.', + 'Coupon format is required and must contain at least one `#`.' => 'Il formato dei codici promozionali è obbligatorio e deve contenere almeno un `#`.', + 'Coupon not valid.' => 'Coupon non valido.', + 'Coupon removed: {explanation}' => 'Coupon rimosso: {explanation}', + 'Coupons' => 'Codici promozionali', + 'Craft Commerce - Administration' => 'Craft Commerce - Amministrazione', + 'Craft Commerce - Inventory' => 'Craft Commerce - Inventario', + 'Craft Commerce - Orders' => 'Craft Commerce - Ordini', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce - Tipo di prodotto - {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce - Abbonamenti', + 'Create a Discount' => 'Crea uno sconto', + 'Create a Subscription Plan' => 'Crea un piano di sottoscrizione', + 'Create a new PDF' => 'Crea nuovo PDF', + 'Create a new catalog pricing rule' => 'Crea una nuova regola di prezzo in catalogo', + 'Create a new currency' => 'Crea una nuova valuta', + 'Create a new email' => 'Crea una nuova email', + 'Create a new gateway' => 'Crea un nuovo gateway', + 'Create a new line item status' => 'Crea un nuovo stato voce', + 'Create a new order status' => 'Crea un nuovo stato ordine', + 'Create a new product type' => 'Crea un nuovo tipo di prodotto', + 'Create a new sale' => 'Crea una nuova vendita promozionale', + 'Create a new shipping category' => 'Crea una nuova categoria di spedizione', + 'Create a new shipping method' => 'Crea un nuovo metodo di spedizione', + 'Create a new shipping rule' => 'Crea una nuova regola di spedizione', + 'Create a new tax category' => 'Crea una nuova categoria fiscale', + 'Create a new tax rate' => 'Crea una nuova aliquota fiscale', + 'Create a product type' => 'Crea un tipo di prodotto', + 'Create a shipping zone' => 'Crea un’area di spedizione', + 'Create a tax zone' => 'Crea una zona fiscale', + 'Create catalog pricing rules' => 'Crea regole di prezzo in catalogo', + 'Create customer: “{email}”' => 'Crea cliente: “{email}”', + 'Create discounts' => 'Crea sconti', + 'Create discount…' => 'Creazione sconto in corso...', + 'Create rules that allow this discount to match the order.' => 'Crea regole che permettono a questo sconto di corrispondere all\'ordine.', + 'Create rules that allow this discount to match the order’s billing address.' => 'Crea regole che permettono a questo sconto di corrispondere all\'indirizzo di fatturazione dell\'ordine.', + 'Create rules that allow this discount to match the order’s customer.' => 'Crea regole che permettono a questo sconto di corrispondere al cliente dell\'ordine.', + 'Create rules that allow this discount to match the order’s shipping address.' => 'Crea regole che permettono a questo sconto di corrispondere all\'indirizzo di spedizione dell\'ordine.', + 'Create rules that allow this gateway to match the billing address.' => 'Crea delle regole che consentano a questo gateway di corrispondere all\'indirizzo di fatturazione.', + 'Create rules that allow this gateway to match the order.' => 'Crea regole che permettono a questo gateway di corrispondere all\'ordine.', + 'Create rules that allow this gateway to match the shipping address.' => 'Crea delle regole che consentano a questo gateway di corrispondere all\'indirizzo di spedizione.', + 'Create sales' => 'Crea vendite promozionali', + 'Create sale…' => 'Creazione vendita promozionale in corso...', + 'Created' => 'Creato', + 'Credit Card Payment Type' => 'Tipo di pagamento con carta di credito', + 'Currency Code' => 'Codice valuta', + 'Currency saved.' => 'Valuta salvata.', + 'Currency' => 'Valuta', + 'Current' => 'Attuale', + 'Custom 1' => 'Personalizzato 1', + 'Custom 2' => 'Personalizzato 2', + 'Custom 3' => 'Personalizzato 3', + 'Custom 4' => 'Personalizzato 4', + 'Custom' => 'Personalizzato', + 'Customer Enabled?' => 'Cliente abilitato?', + 'Customer ID is required.' => 'È richiesto un ID cliente.', + 'Customer Note' => 'Nota del cliente', + 'Customer Notices' => 'Notifiche del cliente', + 'Customer data' => 'Dati dei clienti', + 'Customer' => 'Cliente', + 'Damaged' => 'Danneggiato', + 'Data shown might be outdated.' => 'I dati riportati potrebbero essere obsoleti.', + 'Date Authorized' => 'Data di autorizzazione', + 'Date Created' => 'Data creazione', + 'Date First Paid' => 'Data primo pagamento', + 'Date Ordered' => 'Data ordine', + 'Date Paid' => 'Data pagamento', + 'Date Updated' => 'Data aggiornamento', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'Data in cui la regola di prezzo in catalogo verrà attivata. Lasciare vuoto per data di inizio illimitata', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'Data in cui lo sconto verrà attivato. Lasciare vuoto per data di inizio illimitata', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'Data in cui la vendita promozionale verrà attivata. Lasciare vuoto per data di inizio illimitata', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'Data in cui la regola di prezzo in catalogo terminerà. Lasciare vuoto per data di fine illimitata', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'Data in cui lo sconto terminerà. Lasciare vuoto per data di fine illimitata', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'Data in cui la vendita promozionale terminerà. Lasciare vuoto per data di fine illimitata', + 'Date' => 'Data', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'Predefinito - Consente un prezzo negativo se gli sconti sono di importo superiore al valore dell\'ordine.', + 'Default Category' => 'Categoria predefinita', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'Visualizzazione predefinita del pannello di controllo di Commerce. Se non dispone del permesso, l\'utente tornerà a una posizione a cui può accedere.', + 'Default Order PDF' => 'PDF ordine predefinito', + 'Default Per Item Rate' => 'Tariffa in base ad articolo predefinita', + 'Default Percentage Rate' => 'Tariffa in base a percentuale predefinita', + 'Default Status?' => 'Stato predefinito?', + 'Default View' => 'Vista predefinita', + 'Default Weight Rate' => 'Tariffa in base al peso predefinita', + 'Default Zone' => 'Zona predefinita', + 'Default status?' => 'Stato predefinito?', + 'Default to this tax zone when no billing address is set' => 'Tasso di imposta predefinito se non viene impostato nessun indirizzo di fatturazione', + 'Default to this tax zone when no shipping address is set' => 'Zona fiscale predefinita se non viene impostato nessun indirizzo di spedizione', + 'Default variant updated.' => 'Variante predefinita aggiornata.', + 'Default' => 'Impostazione predefinita', + 'Default?' => 'Ripristinare le impostazioni predefinite?', + 'Delete catalog pricing rules' => 'Elimina regole di prezzo in catalogo', + 'Delete discounts' => 'Elimina sconti', + 'Delete orders' => 'Elimina ordini', + 'Delete sales' => 'Elimina vendite promozionali', + 'Delete' => 'Elimina', + 'Deleting the {location} location.' => 'Eliminazione della sede {location}.', + 'Describe this rule.' => 'Descrivere questa regola.', + 'Describe this shipping zone.' => 'Descrivere quest’area di spedizione.', + 'Describe this tax zone.' => 'Descrivere questa zona fiscale.', + 'Description' => 'Descrizione', + 'Destination Inventory Location' => 'Sede dell\'inventario di destinazione', + 'Destination' => 'Destinazione', + 'Details' => 'Dettagli', + 'Dimension Unit' => 'Unità dimensioni', + 'Dimensions' => 'Dimensioni', + 'Disabled' => 'Disabilitato', + 'Disallow' => 'Nega', + 'Discount all line items' => 'Sconta tutte le voci', + 'Discount description.' => 'Descrizione sconto.', + 'Discount is not allowed for the order' => 'Sconto non consentito per l\'ordine', + 'Discount is out of date.' => 'Sconto scaduto.', + 'Discount saved.' => 'Sconto salvato.', + 'Discount the matching items only' => 'Sconta solo gli articoli corrispondenti', + 'Discount use has reached its limit.' => 'Limite raggiunto per uso sconti.', + 'Discount' => 'Sconto', + 'Discounted Item Subtotal' => 'Totale parziale dell\'articolo scontato', + 'Discounted Items' => 'Articoli scontati', + 'Discounts deleted.' => 'Sconti eliminati.', + 'Discounts reordered.' => 'Sconti riordinati.', + 'Discounts updated.' => 'Sconti aggiornati.', + 'Discounts' => 'Sconti', + 'Disqualify with valid business tax ID?' => 'Annullare con partita IVA aziendale valida?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'Non applicare vendite corrispondenti successive oltre all’applicazione di questa vendita.', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => 'Non applicare questa aliquota se l\'indirizzo dell\'ordine ha una delle partite IVA aziendali valide selezionate.', + 'Do not attach a PDF to this email' => 'Non allegare un PDF a questa email', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'Non richiamare il ricalcolo dell\'ordine (Numero: {orderNumber}) in presenza di errori.', + 'Donation can not be zero.' => 'La donazione non può essere pari a zero.', + 'Donation needs to be an amount.' => 'La donazione deve essere un importo numerico.', + 'Donation settings saved.' => 'Impostazioni di donazione salvate.', + 'Donation' => 'Donazione', + 'Donations' => 'Donazioni', + 'Done' => 'Fine', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'Non applicare sconti successivi a un ordine se viene applicato questo sconto', + 'Download PDF' => 'Scarica PDF', + 'Download PDF…' => 'Scarica PDF…', + 'Download Type' => 'Tipo di download', + 'Download' => 'Scarica', + 'Draft' => 'Bozza', + 'Dummy gateway payment failed.' => 'Pagamento gateway provvisorio non riuscito.', + 'Duplicate options exist' => 'Esistono opzioni duplicate', + 'Duration' => 'Durata', + 'EU VAT ID' => 'Partita IVA europea', + 'Edit address' => 'Modifica indirizzo', + 'Edit adjustments' => 'Modifica rettifiche', + 'Edit catalog pricing rules' => 'Modifica regole di prezzo in catalogo', + 'Edit discounts' => 'Modifica sconti', + 'Edit options' => 'Modifica opzioni', + 'Edit orders' => 'Modifica ordini', + 'Edit sales' => 'Modifica vendite promozionali', + 'Edit' => 'Modifica', + 'Effect' => 'Effetto', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'Qualsiasi (predefinito) - Il campo relazione è sul campo disponibile all\'acquisto o categoria', + 'Either way' => 'Entrambi i casi', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'Errore di generazione del PDF dell\'email per l\'email “{email}”. Ordine: “{order}”. Errore template PDF: “{message}” {file}:{line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'Il template PDF dell’email non esiste in “{templatePath}” per l’email “{email}”. Ordine: “{order}”.', + 'Email Subject' => 'Oggetto dell’email', + 'Email error. No email address found for order. Order: “{order}”' => 'Errore email. Nessun indirizzo email trovato per l’ordine. Ordine: “{order}”', + 'Email is not enabled.' => 'Email non abilitata.', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Il template dell’email di testo semplice non esiste in “{templatePath}” ed è risultato essere “{templateParsedPath}” per l’email “{email}”. Ordine: “{order}”.', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Errore di analisi del template email di testo semplice per l\'email “{email}”. Ordine: “{order}”. Errore template: “{message}” {file}:{line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Errore di analisi del percorso al template email di testo semplice per l\'email “{email}” in “Template Path”. Ordine: “{order}”. Errore template: “{message}” {file}:{line}', + 'Email required to make payments on a completed order.' => 'Email necessaria per effettuare i pagamenti per un ordine completato.', + 'Email saved.' => 'Email salvata.', + 'Email sent' => 'Email inviata', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'Il template dell’email non esiste in “{templatePath}” ed è risultato essere “{templateParsedPath}” per l’email “{email}”. Ordine: “{order}”.', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Errore di analisi del template email per l\'email personalizzata “{email}” in “To:”. Ordine: “{order}”. Errore template: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Errore di analisi del template email per l\'email “{email}” in “BCC:”. Ordine: “{order}”. Errore template: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Errore di analisi del template email per l\'email “{email}” in “CC:”. Ordine: “{order}”. Errore template: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Errore di analisi del template email per l\'email “{email}” in “ReplyTo:”. Ordine: “{order}”. Errore template: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Errore di analisi del template email per l\'email “{email}” in “Subject:”. Ordine: “{order}”. Errore template: “{message}” {file}:{line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Errore di analisi del template email per l\'email “{email}”. Ordine: “{order}”. Errore template: “{message}” {file}:{line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Errore di analisi del percorso al template email per l\'email “{email}” in “Template Path”. Ordine: “{order}”. Errore template: “{message}” {file}:{line}', + 'Email unavailable.' => 'E-mail non disponibile.', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => 'Non è stato possibile inviare l\'email “{email}” per l\'ordine “{order}”. Errore: {error} {file}:{line}', + 'Email “{email}” for order {order} was cancelled.' => 'L’email “{email}” per l’ordine {order} è stata cancellata.', + 'Email' => 'Email', + 'Emails' => 'Email', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'Abilita l\'opzione se questa aliquota deve essere inclusa nel prezzo dell\'imponibile invece di aggiungere un costo all\'ordine.', + 'Enable structure for products of this type' => 'Abilita struttura per i prodotti di questo tipo', + 'Enable this discount' => 'Abilita questo sconto', + 'Enable this rule' => 'Abilita questa regola', + 'Enable this sale' => 'Abilita questa vendita promozionale', + 'Enable this shipping method on the front end' => 'Abilita questo metodo di spedizione in front end', + 'Enable this shipping rule' => 'Abilita questa regola di spedizione', + 'Enable this tax rate' => 'Abilita questa aliquota fiscale', + 'Enabled for customers to select during checkout?' => 'Abilitato per la selezione da parte dei clienti in fase di pagamento?', + 'Enabled for customers to select?' => 'Abilitato per la selezione da parte dei clienti?', + 'Enabled' => 'Pubblicato', + 'Enabled?' => 'Abilitato?', + 'End Date' => 'Data di fine', + 'Enter SKU' => 'Inserisci SKU', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'Inserisci un nome facilmente comprensibile per questa aliquota fiscale da usare nel pannello di controllo.', + 'Enter a percentage like {ex1} or {ex2}.' => 'Inserisci una percentuale come {ex1} o {ex2}.', + 'Enter coupon code' => 'Inserisci il codice coupon', + 'Enter reference' => 'Inserisci riferimento', + 'Error refunding transaction: {transactionHash}' => 'Errore di rimborso della transazione: {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'Ogni nuovo store deve essere assegnato ad almeno un sito.', + 'Everywhere' => 'Ovunque', + 'Example' => 'Esempio', + 'Exclude this discount for products that are already on promotion' => 'Escludi questo sconto per i prodotti che sono già in promozione', + 'Expired Link' => 'Link scaduto', + 'Expired' => 'Scaduto', + 'Expiry Date' => 'Data di scadenza', + 'Expiry date' => 'Data di scadenza', + 'Expiry' => 'Scadenza', + 'Failed to receive transfer: {error}' => 'Impossibile ricevere il trasferimento: {error}', + 'Failed to send email. Please try again.' => 'Impossibile inviare l\'email. Riprova.', + 'Failed to start' => 'Avvio fallito', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => 'Impossibile aggiornare {num, plural, one {}=1{stato dell\'ordine} other{stati degli ordini}}.', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => 'Impossibile aggiornare lo stato dell\'ordine su {num, plural, one {}=1{ordine} other{ordini}}.', + 'Feet (ft)' => 'Piedi (ft)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'Condizioni di applicazione filtri che descrivono a quali ordini si applica questa regola. Scrivere 0 per saltare una condizione.', + 'First Name' => 'Nome', + 'Flat Amount Off Order' => 'Importo forfettario di sconto sull\'ordine', + 'Flat Order Discount Amount Off' => 'Importo di sconto per ordine forfettario', + 'Free Order Payment Strategy' => 'Strategia di pagamento per ordini gratuiti', + 'Free Shipping' => 'Spedizione gratuita', + 'Free orders are processed by the payment gateway' => 'Gli ordini gratuiti vengono elaborati dal gateway di pagamento', + 'Free orders complete immediately' => 'Ordini gratuiti da completare immediatamente', + 'Free shipping can only be for whole order or matching items, not both.' => 'La spedizione gratuita può essere applicata solo all\'intero ordine o agli articoli abbinati, non a entrambi.', + 'From Name' => 'Nome provenienza', + 'Fulfill' => 'Evadi', + 'Fulfilled' => 'Evaso', + 'Fulfillment' => 'Evasione', + 'Full Name' => 'Nome completo', + 'Gateway Code' => 'Codice del gateway', + 'Gateway Message' => 'Messaggio del gateway', + 'Gateway Reference' => 'Riferimento del gateway', + 'Gateway Response' => 'Risposta del gateway', + 'Gateway doesn’t support authorize' => 'Il gateway non supporta l’autorizzazione', + 'Gateway doesn’t support partial refunds.' => 'Il gateway non supporta rimborsi parziali.', + 'Gateway doesn’t support purchase' => 'Il gateway non supporta l’acquisto', + 'Gateway doesn’t support refunds.' => 'Il gateway non supporta i rimborsi.', + 'Gateway saved.' => 'Gateway salvato.', + 'Gateway' => 'Gateway', + 'Gateways reordered.' => 'Gateway riordinati.', + 'Gateways' => 'Gateway', + 'General Settings' => 'Impostazioni generali', + 'General' => 'Generale', + 'Generate' => 'Genera', + 'Generated Coupon Format' => 'Formato codice promozionale generato', + 'Grams (g)' => 'Grammi (g)', + 'Groups for which this sale will be applicable to.' => 'Gruppi a cui questa vendita promozionale sarà applicabile.', + 'HTML Email Template Path' => 'Percorso template email HTML', + 'Handle' => 'Puntatore', + 'Harmonized System Code' => 'Codice sistema armonizzato', + 'Has Admin Notices' => 'Contiene avvisi dell\'amministratore', + 'Has Emails?' => 'Ha delle email?', + 'Has Free Shipping' => 'Spedizione gratuita disponibile', + 'Has Orders' => 'Ha ordini', + 'Has Purchasable' => 'Ha prodotti disponibili all’acquisto', + 'Has Variants?' => 'Ha delle varianti?', + 'Height ({unit})' => 'Altezza ({unit})', + 'Height' => 'Altezza', + 'Hide snapshot' => 'Nascondi snapshot', + 'History' => 'Cronologia', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'Per quanto tempo (in secondi) un link di download PDF deve rimanere valido prima di scadere. Il valore predefinito è 86.400 (24 ore).', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => 'Quante volte un indirizzo email può utilizzare questo sconto. Si applica a tutti gli ordini precedenti, sia di ospiti che di utenti. Impostare su zero per l’uso illimitato da parte di ospiti e di utenti.', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => 'Quante volte un utente può usare questo sconto. Se questa opzione è impostata a un valore non nullo, lo sconto sarà disponibile solo agli utenti registrati.', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'Quante volte gli ospiti o gli utenti registrati potranno utilizzare questo sconto in totale. Impostare su zero per l’uso illimitato.', + 'How products should be labeled within the control panel.' => 'Come devono essere etichettati i prodotti nel pannello di controllo.', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'Come sono correlati gli articolo disponibili all\'acquisto e le categorie, il che determina gli articoli corrispondenti. Vedi [Terminologia delle relazioni]({link}).', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'Come verrà descritto questo prodotto in una voce di un ordine. È possibile includere tag che producono proprietà, come {ex1} o {ex2}', + 'How this shipping method will be referred to in templates and forms.' => 'In che modo si farà riferimento a questo metodo di spedizione nei template e nei moduli.', + 'How variants should be labeled within the control panel.' => 'Come devono essere etichettate le varianti nel pannello di controllo.', + 'How you’ll refer to this PDF in the templates.' => 'Come farai riferimento a questo PDF nei template.', + 'How you’ll refer to this product type in the templates.' => 'Come farai riferimento a questo tipo di prodotto nei template.', + 'How you’ll refer to this shipping category in the templates.' => 'Come farai riferimento a questa categoria di spedizione nei template.', + 'How you’ll refer to this status in the templates.' => 'Come farai riferimento a questo stato nei template.', + 'How you’ll refer to this subscription plan in the templates.' => 'Come ti riferirai a questa sottoscrizione nei template.', + 'How you’ll refer to this tax category in the templates.' => 'Come farai riferimento a questa categoria fiscale nei template.', + 'ID' => 'ID', + 'IP Address' => 'Indirizzo IP', + 'If disabled, this PDF will not be available or sent with emails.' => 'Se disattivato, questo PDF non sarà disponibile o inviato con le e-mail.', + 'If disabled, this email will not send.' => 'Se la voce è disabilitata, questa email non verrà inviata.', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => 'Se l\'opzione è abilitata e l\'aliquota non corrisponde all\'ordine, l\'importo dell\'aliquota sarà rimosso dal prezzo dell\'imponibile nel carrello.', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'Se impostato su Autorizza solo, sarà necessario acquisire manualmente i pagamenti prima che i fondi vengano trasferiti sul proprio conto. Il gateway deve supportare l’opzione selezionata.', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => 'Se selezioni la percentuale di "riduzione sul prezzo dell\'articolo scontato", essa includerà l\'"Importo per articolo" così come qualsiasi altro sconto applicato prima di questo.', + 'Ignore Promotions?' => 'Ignora promozioni?', + 'Ignore previous matching sales if this sale matches.' => 'Ignora vendite precedenti corrispondenti se questa vendita corrisponde.', + 'Ignore promotional prices when this discount is applied to matching line items' => 'Ignora i prezzi promozionali quando questo sconto viene applicato agli articoli corrispondenti', + 'Inactive Carts' => 'Carrelli non attivi', + 'Inches (in)' => 'Pollici (in)', + 'Include built-in line item tax.' => 'Includi imposta integrata nelle voci.', + 'Include in price?' => 'Includere nel prezzo?', + 'Include line item discounts.' => 'Includi sconti delle voci.', + 'Include line item shipping costs.' => 'Includi costi di spedizione delle voci.', + 'Include separate line item tax.' => 'Includi imposta separata delle voci.', + 'Included in price?' => 'Incluso nel prezzo?', + 'Included' => 'Incluso', + 'Incoming transfer from Transfer ID: ' => 'Trasferimento in arrivo dall\'ID di trasferimento: ', + 'Incoming' => 'In arrivo', + 'Info' => 'Informazioni', + 'Information linked?' => 'Informazioni correlate?', + 'Information' => 'Informazioni', + 'Invalid JSON' => 'JSON non valido', + 'Invalid Order ID' => 'ID ordine non valido', + 'Invalid VAT ID.' => 'Partita IVA non valida.', + 'Invalid condition syntax' => 'Sintassi della condizione non valida', + 'Invalid email.' => 'Email non valida.', + 'Invalid formula syntax' => 'Sintassi della formula non valida', + 'Invalid gateway: {value}' => 'Gateway non valido: {value}', + 'Invalid inventory movements.' => 'Movimenti di inventario non validi.', + 'Invalid order condition syntax.' => 'Sintassi della condizione dell\'ordine non valida.', + 'Invalid payment or order. Please review.' => 'Ordine o pagamento non valido. Controlla i dati.', + 'Invalid payment source ID: {value}' => 'ID fonte di pagamento non valido: {value}', + 'Invalid store.' => 'Store non valido.', + 'Invalid user.' => 'Utente non valido.', + 'Inventory Item' => 'Articolo dell\'inventario', + 'Inventory Location' => 'Sede dell\'inventario', + 'Inventory Locations' => 'Sedi dell\'inventario', + 'Inventory Tracked' => 'Inventario tracciato', + 'Inventory Transfers' => 'Trasferimenti dell\'inventario', + 'Inventory could not be set.' => 'Non è stato possibile impostare l\'inventario.', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => 'La sede dell\'inventario ha impegnato lo stock, l\'ordine o gli ordini devono prima essere evasi.', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => 'La sede dell\'inventario ha stock in arrivo, il trasferimento o i trasferimenti devono prima essere completati.', + 'Inventory location is already deactivated.' => 'La sede dell\'inventario è già disattivata.', + 'Inventory location saved.' => 'Sede dell\'inventario salvata.', + 'Inventory locations not saved.' => 'Sedi dell\'inventario non salvate.', + 'Inventory movement could not be saved.' => 'Non è stato possibile salvare il movimento di inventario.', + 'Inventory movement saved.' => 'Movimento di inventario salvato.', + 'Inventory updated.' => 'Inventario aggiornato.', + 'Inventory was not updated.' => 'Inventario non aggiornato.', + 'Inventory' => 'Inventario', + 'Invoice amount' => 'Importo fattura', + 'Invoice date' => 'Data fattura', + 'Is Promotable' => 'Promozione applicabile', + 'Is Promotional Price?' => 'È il prezzo promozionale?', + 'Is Shippable' => 'Spedizione disponibile', + 'Is Taxable' => 'Tassazione disponibile', + 'Item Rates' => 'Tariffe per articolo', + 'Item Subtotal' => 'Subtotale articolo', + 'Item Total' => 'Totale articolo', + 'Item' => 'Elemento', + 'Items' => 'Articoli', + 'Kilograms (kg)' => 'Chilogrammi (kg)', + 'Label' => 'Etichetta', + 'Landscape' => 'Orizzontale', + 'Language' => 'Lingua', + 'Last Name' => 'Cognome', + 'Last Updated' => 'Ultimo aggiornamento', + 'Leave a category rate override blank to use the rate from above.' => 'Lascia vuota l\'opzione di override del tasso di categoria per utilizzare il tasso di cui sopra.', + 'Leave blank for unlimited uses.' => 'Lascia in bianco per indicare utilizzo illimitato.', + 'Leave blank if products don’t have URLs' => 'Lascia il campo vuoto se ai prodotti non sono associati URL', + 'Leave gateway subscription as-is' => 'Lascia invariato l\'abbonamento al gateway', + 'Length ({unit})' => 'Lunghezza ({unit})', + 'Length' => 'Lunghezza', + 'Let each product choose which sites it should be saved to' => 'Lascia scegliere a ogni prodotto su quali siti deve essere salvato', + 'Limit which orders this discount applies to based on its line items.' => 'Limita a quali ordini applicare questo sconto in base ai relativi articoli.', + 'Limit which purchasables this sale applies to.' => 'Limita a quali articoli disponibili all\'acquisto applicare questa offerta.', + 'Limit' => 'Limite', + 'Line Item Statuses' => 'Stati delle voci', + 'Line Item' => 'Voce', + 'Line Items' => 'Voci', + 'Line item price (minus discounts)' => 'Prezzo per articolo (meno gli sconti)', + 'Line item shipping cost' => 'Costo di spedizione per voce', + 'Line item statuses reordered.' => 'Stati delle voci riordinati.', + 'Link Duration' => 'Durata link', + 'Link Sent' => 'Link inviato', + 'Link to a product' => 'Collega a un prodotto', + 'Link to a variant' => 'Collega a una variante', + 'Link' => 'Collega', + 'Live' => 'Pubblicato', + 'Location' => 'Sede', + 'Locations that should be available for previewing products in this product type.' => 'Posizioni che dovrebbero essere disponibili per l\'anteprima dei prodotti in questo tipo di prodotto.', + 'MM' => 'MM', + 'Make a payment' => 'Effettua un pagamento', + 'Make this the primary store' => 'Renderlo lo store principale', + 'Manage Inventory' => 'Gestisci inventario', + 'Manage donation settings' => 'Gestisci impostazioni di donazione', + 'Manage general store settings' => 'Gestisci impostazioni dello store generale', + 'Manage inventory locations' => 'Gestisci sedi dell\'inventario', + 'Manage inventory stock levels' => 'Gestisci livelli di stock dell\'inventario', + 'Manage inventory transfers' => 'Gestisci trasferimenti dell\'inventario', + 'Manage orders' => 'Gestisci ordini', + 'Manage payment currencies' => 'Gestisci valute di pagamento', + 'Manage promotions' => 'Gestisci promozioni', + 'Manage shipping' => 'Gestisci spedizione', + 'Manage store settings' => 'Gestisci impostazioni dello store', + 'Manage subscription plans' => 'Gestisci piani di sottoscrizione', + 'Manage subscription' => 'Gestisci sottoscrizione', + 'Manage subscriptions' => 'Gestisci sottoscrizioni', + 'Manage taxes' => 'Gestisci imposte', + 'Manage' => 'Gestisci', + 'Mark as Pending' => 'Contrassegna come in attesa', + 'Mark as completed' => 'Contrassegna come completato', + 'Match Billing Address' => 'Sconto basato su indirizzo di fatturazione', + 'Match Customer' => 'Sconto basato sul cliente', + 'Match Order' => 'Sconto basato sull\'ordine', + 'Match Orders' => 'Corrispondenza ordini', + 'Match Product' => 'Abbina prodotto', + 'Match Purchasable' => 'Abbina articoli disponibili per l\'acquisto', + 'Match Shipping Address' => 'Sconto basato su indirizzo di spedizione', + 'Match Variant' => 'Abbina variante', + 'Matching Items' => 'Articoli corrispondenti', + 'Max Qty' => 'Quantità massima', + 'Max Uses' => 'Numero max. utilizzi', + 'Max Variants' => 'Varianti massime', + 'Max quantity must greater than min.' => 'La quantità massima deve essere maggiore di quella minima.', + 'Maximum Purchase Quantity' => 'Quantità massima acquistabile', + 'Maximum Total Shipping Cost' => 'Costi di spedizione totali massimi', + 'Maximum allowed quantity' => 'Quantità massima consentita', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'Numero massimo di articoli corrispondenti ordinabili per applicare questo sconto. Se questo valore è pari a zero, questa condizione verrà saltata.', + 'Maximum order quantity for this item is {num}.' => 'La quantità massima ordinabile per questo articolo è pari a {num}.', + 'Message' => 'Messaggio', + 'Meters (m)' => 'Metri (m)', + 'Millimeters (mm)' => 'Millimetri (mm)', + 'Min Qty' => 'Quantità min.', + 'Min quantity must be less than max.' => 'La quantità minima deve essere minore di quella massima.', + 'Minimum Purchase Quantity' => 'Quantità minima acquistabile', + 'Minimum Total Price Strategy' => 'Strategia prezzo totale minimo', + 'Minimum Total Shipping Cost' => 'Costi di spedizione totali minimi', + 'Minimum allowed quantity' => 'Quantità minima consentita', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'Numero minimo di articoli corrispondenti che devono essere ordinati per applicare questo sconto.', + 'Minimum order quantity for this item is {num}.' => 'La quantità minima ordinabile per questo articolo è pari a {num}.', + 'Missing Gateway' => 'Gateway mancante', + 'Missing a default inventory location.' => 'Sede predefinita dell\'inventario mancante.', + 'Move Inventory' => 'Sposta inventario', + 'Move To' => 'Sposta in', + 'Move {qty} from {fromType} to {toType}' => 'Sposta {qty} da {fromType} a {toType}', + 'Move' => 'Sposta', + 'Movement from deactivated inventory location' => 'Spostamento dalla sede dell\'inventario disattivata', + 'Movement' => 'Spostamento', + 'Must have at least one variant.' => 'Deve avere almeno una variante.', + 'Name Field' => 'Campo Nome', + 'Name' => 'Nome', + 'New Customer' => 'Nuovo cliente', + 'New Customers' => 'Nuovi clienti', + 'New Order' => 'Nuovo ordine', + 'New PDF' => 'Nuovo PDF', + 'New address' => 'Nuovo indirizzo', + 'New catalog pricing rule' => 'Nuova regola di prezzo in catalogo', + 'New currency' => 'Nuova valuta', + 'New discount' => 'Nuovo sconto', + 'New email' => 'Nuova email', + 'New gateway' => 'Nuovo gateway', + 'New line item status' => 'Nuovo stato voce', + 'New line items get this status by default when the order is completed' => 'Le nuove voci ricevono questo stato per impostazione predefinita al completamento dell\'ordine', + 'New location' => 'Nuova sede', + 'New order status' => 'Nuovo stato ordine', + 'New orders get this status by default' => 'I nuovi ordini passano a questo stato per impostazione predefinita', + 'New product type' => 'Nuovo tipo di prodotto', + 'New product' => 'Nuovo prodotto', + 'New product, choose a type' => 'Nuovo prodotto, scegli un tipo', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => 'I nuovi prodotti sono impostati come predefinito sulla prima categoria fiscale disponibile. Se nessuna è disponibile, è usata questa categoria.', + 'New sale' => 'Nuova vendita promozionale', + 'New shipping category' => 'Nuova categoria di spedizione', + 'New shipping method' => 'Nuovo metodo di spedizione', + 'New shipping rule' => 'Nuova regola di spedizione', + 'New shipping zone' => 'Nuova area di spedizione', + 'New subscription plan' => 'Nuovo piano di sottoscrizione', + 'New tax category' => 'Nuova categoria fiscale', + 'New tax rate' => 'Nuova aliquota fiscale', + 'New tax zone' => 'Nuova zona fiscale', + 'New transfer' => 'Nuovo trasferimento', + 'New {productType} product' => 'Nuovo prodotto {productType}', + 'New' => 'Nuovo', + 'Next payment' => 'Pagamento successivo', + 'No Address' => 'Nessun indirizzo', + 'No PDFs exist yet.' => 'Non esiste ancora nessun PDF.', + 'No access given to any specific store management features.' => 'Non è consentito l\'accesso ad alcuna funzione specifica di gestione dello store.', + 'No additional payment currencies exist yet.' => 'Non esiste ancora nessuna valuta di pagamento aggiuntiva.', + 'No address' => 'Nessun indirizzo', + 'No billing address' => 'Nessun indirizzo di fatturazione', + 'No catalog pricing rule exists with the ID “{id}”' => 'Nessuna regola di prezzo in catalogo esistente con ID “{id}”', + 'No catalog pricing rules exist yet.' => 'Non esiste ancora nessuna regola di prezzo in catalogo.', + 'No currency exists with the ID “{id}”' => 'Nessuna valuta esistente con ID “{id}”', + 'No customer email address exists on this cart.' => 'Non esiste nessun indirizzo email cliente in questo carrello.', + 'No description' => 'Nessuna descrizione', + 'No discount exists with the ID “{id}”' => 'Nessuno sconto esistente con ID “{id}”', + 'No discounts exist yet.' => 'Non esiste ancora nessuno sconto.', + 'No donation amount supplied.' => 'Nessun importo di donazione fornito.', + 'No emails exist yet.' => 'Non esiste ancora nessuna email.', + 'No inventory changes made.' => 'Non sono state apportate modifiche all\'inventario.', + 'No inventory found.' => 'Non è stato trovato alcun inventario.', + 'No inventory movements made.' => 'Non sono stati effettuati spostamenti in inventario.', + 'No inventory transactions for this location.' => 'Nessuna transazione di inventario per questa sede.', + 'No new customer selected.' => 'Non è stato selezionato alcun nuovo cliente.', + 'No order history exists with the ID “{id}”' => 'Nessuno storico ordini esistente con ID “{id}”', + 'No order status history items will exist until the cart becomes an order.' => 'Non esisterà alcuna cronologia di stato dell’ordine fino a quando il carrello non diventerà un ordine.', + 'No payment source exists with the ID “{id}”' => 'Nessuna fonte di pagamento esistente con ID “{id}”', + 'No private Note.' => 'Nessuna nota privata.', + 'No product available.' => 'Nessun prodotto disponibile.', + 'No product types exist yet.' => 'Non esiste ancora nessun tipo di prodotto.', + 'No purchasable available.' => 'Nessun prodotto disponibile all’acquisto.', + 'No sale exists with the ID “{id}”' => 'Nessuna vendita promozionale con ID “{id}”', + 'No sales exist yet.' => 'Non esiste ancora nessuna vendita promozionale.', + 'No shipping address' => 'Nessun indirizzo di spedizione', + 'No shipping category exists with the ID “{id}”' => 'Nessuna categoria di spedizione esistente con ID “{id}”', + 'No shipping method exists with the ID “{id}”' => 'Nessun metodo di spedizione esistente con ID “{id}”', + 'No shipping rule exists with the ID “{id}”' => 'Nessuna regola di spedizione esistente con ID “{id}”', + 'No shipping rules exist yet.' => 'Non esiste ancora nessuna regola di spedizione.', + 'No shipping zone exists with the ID “{id}”' => 'Nessuna area di spedizione esistente con ID “{id}”', + 'No stats available.' => 'Statistiche indisponibili.', + 'No subscription plan exists with the ID “{id}”' => 'Nessun piano di sottoscrizione esistente con ID “{id}”', + 'No subscription plans exist yet.' => 'Non esiste ancora nessun piano di sottoscrizione.', + 'No tax category exists with the ID “{id}”' => 'Nessuna categoria fiscale esistente con ID “{id}”', + 'No tax rate exists with the ID “{id}”' => 'Nessuna aliquota fiscale esistente con ID “{id}”', + 'No tax zone exists with the ID “{id}”' => 'Nessuna zona fiscale esistente con ID “{id}”', + 'No transactions exist.' => 'Nessuna transazione esistente.', + 'No user authenticated.' => 'Nessun utente autenticato.', + 'No' => 'No', + 'None on hand' => 'Nessuno a disposizione', + 'None' => 'Nessuno', + 'Not a valid address type' => 'Tipo di indirizzo non valido', + 'Not a valid credit card number.' => 'Numero di carta di credito non valido.', + 'Not all SKUs are unique.' => 'Non tutti gli SKU sono univoci.', + 'Note' => 'Nota', + 'Notes' => 'Note', + 'Number of Coupons' => 'Numero di codici promozionali', + 'Number' => 'Numero', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => 'Dei siti abilitati riportati sopra, in quali siti devono essere salvati i prodotti in questo tipo di prodotto?', + 'On Hand' => 'Disponibile', + 'Only allow this gateway to be used for zero value orders?' => 'Consenti l’utilizzo di questo gateway solo per gli ordini di valore zero?', + 'Only match certain purchasables…' => 'Solo corrispondenza con determinati articoli disponibili all\'acquisto…', + 'Only match purchasables related to…' => 'Solo corrispondenza con articoli disponibili all\'acquisto relativi a…', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => 'Solo gli ordini con il seguente stato saranno inclusi. Lasciare vuoto per consentire tutti gli stati.', + 'Only save product to the site they were created in' => 'Salva prodotti esclusivamente sul sito di creazione', + 'Options' => 'Opzioni', + 'Order Condition Formula' => 'Formula con condizione di ordine', + 'Order Description Format' => 'Formato descrizione ordine', + 'Order Details' => 'Dettagli ordine', + 'Order Fields' => 'Campi ordine', + 'Order PDF Download Link' => 'Link di download PDF ordine', + 'Order PDF Filename Format' => 'Formato nome file PDF ordine', + 'Order Reference Number Format' => 'Formato numero di riferimento ordine', + 'Order Settings' => 'Impostazioni ordine', + 'Order Site' => 'Sito dell\'ordine', + 'Order Status description.' => 'Descrizione stato ordine.', + 'Order Status' => 'Stato dell’ordine', + 'Order Statuses' => 'Stati ordine', + 'Order can not be empty.' => 'Il campo dell\'ordine non può essere vuoto.', + 'Order count' => 'Conteggio dell\'ordine', + 'Order customer data removed.' => 'Dati del cliente dell\'ordine rimossi.', + 'Order deleted.' => 'Ordine eliminato.', + 'Order fields saved.' => 'Campi dell\'ordine salvati.', + 'Order not found.' => 'Ordine non trovato.', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => 'Il saldo del pagamento dell\'ordine è {outstandingBalanceAsCurrency}. Questo è il valore massimo che verrà addebitato.', + 'Order recalculated.' => 'Ordine ricalcolato.', + 'Order status saved.' => 'Stato dell’ordine salvato.', + 'Order statuses reordered.' => 'Stati degli ordini riordinati.', + 'Order total shipping cost' => 'Costi di spedizione totali dell’ordine', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => 'Prezzo imponibile totale ordine (Subtotale articoli + Sconti totali + Spedizione totale)', + 'Order' => 'Ordine', + 'Orders (Legacy)' => 'Ordini (Legacy)', + 'Orders deleted.' => 'Ordini eliminati.', + 'Orders not restored.' => 'Ordini non ripristinati.', + 'Orders restored.' => 'Ordini ripristinati.', + 'Orders' => 'Ordini', + 'Organization Name' => 'Nome organizzazione', + 'Organization Tax ID' => 'Partita IVA organizzazione', + 'Origin and destination cannot be the same.' => 'L\'origine e la destinazione non possono essere identiche.', + 'Origin' => 'Origine', + 'Original Price' => 'Prezzo originale', + 'Original price' => 'Prezzo originale', + 'Original promotional price' => 'Prezzo promozionale originale', + 'Other Languages' => 'Altre lingue', + 'Other countries' => 'Altri Paesi', + 'Outgoing transfer from Transfer ID: ' => 'Trasferimento in uscita dall\'ID di trasferimento: ', + 'Overpaid' => 'Pagamento in eccesso', + 'Overrides previous?' => 'Sostituisce i dati precedenti?', + 'PDF Attachment' => 'Allegato PDF', + 'PDF Template Path' => 'Percorso al template PDF', + 'PDF saved.' => 'PDF salvato.', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'PDF e e-mail', + 'PDFs' => 'PDF', + 'Paid Amount' => 'Importo pagato', + 'Paid Status' => 'Stato pagamenti effettuati', + 'Paid' => 'Pagato', + 'Paper Orientation' => 'Orientamento foglio', + 'Paper Size' => 'Dimensioni foglio', + 'Partial payment not allowed.' => 'Pagamento parziale non consentito.', + 'Partial' => 'Parziale', + 'Past year' => 'L\'anno scorso', + 'Past {num} days' => '{num} giorni trascorsi', + 'Pay {amount} of {currency} on the order.' => 'Paga {amount} in {currency} sull\'ordine.', + 'Pay' => 'Paga', + 'Payment Amount' => 'Importo pagato', + 'Payment Currencies' => 'Valute di pagamento', + 'Payment Gateway' => 'Gateway di pagamento', + 'Payment Method' => 'Metodo di pagamento', + 'Payment error: {message}' => 'Errore di pagamento: {message}', + 'Payment method issue' => 'Problema con il metodo di pagamento', + 'Payment source created.' => 'Fonte di pagamento creata.', + 'Payment source deleted.' => 'Fonte di pagamento eliminata.', + 'Payments' => 'Pagamenti', + 'Pending' => 'In attesa', + 'Per Email Address Discount Limit' => 'Limite di sconto per indirizzo email', + 'Per Item Amount Off' => 'Importo di sconto per articolo', + 'Per Item Discount' => 'Sconto per articolo', + 'Per Item Percentage Off' => 'Percentuale di sconto per articolo', + 'Per Item Rate' => 'Tariffa in base ad articolo', + 'Per User Discount Limit' => 'Limite di sconto per utente', + 'Percentage Rate' => 'Tariffa in base a percentuale', + 'Phone (Alt)' => 'N. telefono (alt)', + 'Phone' => 'N. telefono', + 'Pick a plan' => 'Scegli un piano', + 'Plain Text Email Template Path' => 'Percorso template email di testo semplice', + 'Plan' => 'Piano', + 'Plans reordered.' => 'Piani riordinati.', + 'Portrait' => 'Verticale', + 'Post Date' => 'Data di pubblicazione', + 'Postal Code Formula' => 'Formula codice postale', + 'Pounds (lb)' => 'Libbre (lb)', + 'Preview' => 'Anteprima', + 'Previous Status' => 'Stato precedente', + 'Price' => 'Prezzo', + 'Prices' => 'Prezzi', + 'Pricing Rules' => 'Regole di prezzo', + 'Pricing jobs are currently running.' => 'Le attività di prezzo sono attualmente in corso.', + 'Pricing' => 'Prezzo', + 'Primary Billing Address' => 'Indirizzo di fatturazione principale', + 'Primary Shipping Address' => 'Indirizzo di spedizione principale', + 'Primary payment source updated.' => 'Fonte di pagamento principale aggiornata.', + 'Primary' => 'Principale', + 'Private Note' => 'Nota privata', + 'Product Fields' => 'Campi prodotto', + 'Product ID is required.' => 'È richiesto un ID prodotto.', + 'Product Template' => 'Template prodotto', + 'Product Title Format' => 'Formato titolo prodotto', + 'Product Type' => 'Tipo di prodotto', + 'Product Types' => 'Tipi di prodotti', + 'Product URI Format' => 'Formato URL prodotto', + 'Product Variant' => 'Variante prodotto', + 'Product Variants' => 'Varianti prodotto', + 'Product type saved.' => 'Tipo di prodotto salvato.', + 'Product type settings' => 'Impostazioni tipo di prodotto', + 'Product' => 'Prodotto', + 'Products and Variants deleted.' => 'Prodotti e Varianti eliminati.', + 'Products not restored.' => 'Prodotti non ripristinati.', + 'Products restored.' => 'Prodotti ripristinati.', + 'Products' => 'Prodotti', + 'Promotable' => 'Promozione applicabile', + 'Promotable?' => 'È possibile applicare promozioni?', + 'Promotional Amount' => 'Importo promozionale', + 'Promotional Price' => 'Prezzo promozionale', + 'Purchasable Categories' => 'Categorie disponibili per l\'acquisto', + 'Purchasable ID and Sale ID are required.' => 'Sono richiesti un ID disponibile all’acquisto e un ID di vendita promozionale.', + 'Purchasable ID is required.' => 'È richiesto un ID disponibile all’acquisto.', + 'Purchasable Type' => 'Tipo disponibile per l’acquisto', + 'Purchasable' => 'Disponibile per l’acquisto', + 'Purchase (Authorize and Capture Immediately)' => 'Acquista (autorizza e acquisisci immediatamente)', + 'Purchase Total' => 'Totale acquisto', + 'Qty' => 'Qtà', + 'Quality Control' => 'Controllo qualità', + 'Quantity' => 'Quantità', + 'Rate' => 'Tasso', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => 'Riassegna {numOrders, plural, one {}=1{ordine} other{ordini}}', + 'Recalculate order' => 'Ricalcola ordine', + 'Receive Inventory' => 'Ricevi inventario', + 'Receive Transfer' => 'Ricevi trasferimento', + 'Receive' => 'Ricevi', + 'Received' => 'Ricevuto', + 'Recent Orders' => 'Ordini recenti', + 'Recipient' => 'Destinatario', + 'Recover Cart' => 'Recupera carrello', + 'Reduce price' => 'Riduci prezzo', + 'Reduce the price by a fixed amount' => 'Riduci il prezzo di un importo fisso', + 'Reduce the price by a percentage of the original price' => 'Riduci il prezzo originale di una determinata percentuale', + 'Reference' => 'Riferimento', + 'Refresh payment history' => 'Aggiorna cronologia pagamenti', + 'Refund note' => 'Nota di rimborso', + 'Refund payment' => 'Rimborsa pagamento', + 'Refund' => 'Rimborso', + 'Reject' => 'Rifiuta', + 'Rejected' => 'Rifiutato', + 'Relationship Type' => 'Tipo di relazione', + 'Removable included tax rates are only allowed for the default tax zone.' => 'Le aliquote fiscali rimovibili incluse sono consentite solo per la zona fiscale predefinita.', + 'Remove address' => 'Rimuovi indirizzo', + 'Remove all shipping costs from the order' => 'Rimuovi tutti i costi di spedizione dall\'ordine', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => 'Rimuovi l\'associazione al cliente e l\'indirizzo e-mail da {numOrders, plural, one {}=1{ordine} other{ordini}}. Puoi scegliere di selezionare ulteriori dati del cliente da rimuovere qui sotto', + 'Remove customer data' => 'Rimuovi dati dei clienti', + 'Remove from price?' => 'Rimuovere dal prezzo?', + 'Remove shipping costs for matching items only' => 'Rimuovi i costi di spedizione solo per gli articoli corrispondenti', + 'Remove the included tax when a valid organization tax ID is present?' => 'Rimuovere l\'aliquota inclusa quando una partita IVA aziendale valida è presente?', + 'Remove' => 'Rimuovi', + 'Removed' => 'Rimosso', + 'Repeat Customers' => 'Clienti abituali', + 'Reply To' => 'Rispondi a', + 'Require Billing Address At Checkout' => 'Richiedi l\'indirizzo di fatturazione al checkout', + 'Require Coupon Code' => 'Richiedi codice coupon', + 'Require Shipping Address At Checkout' => 'Richiedi l\'indirizzo di spedizione al checkout', + 'Require Shipping Method Selection At Checkout' => 'Richiedi la selezione del metodo di spedizione al checkout', + 'Require' => 'Richiedi', + 'Reserved' => 'Riservato', + 'Reset usage' => 'Ripristina utilizzo', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'Limita questo sconto solo agli ordini in cui il cliente ha acquistato un valore totale minimo di articoli corrispondenti.', + 'Revenue Options' => 'Opzioni di ricavo', + 'Revenue' => 'Ricavo', + 'Rule' => 'Regola', + 'Rules reordered.' => 'Regole riordinate.', + 'SKU' => 'SKU', + 'Safety' => 'Sicurezza', + 'Sale Price' => 'Prezzo di vendita promozionale', + 'Sale description.' => 'Descrizione vendita promozionale.', + 'Sale reordered.' => 'Vendita promozionale riordinata.', + 'Sale saved.' => 'Vendita promozionale salvata.', + 'Sale' => 'Vendita promozionale', + 'Sales deleted.' => 'Vendite promozionali eliminate.', + 'Sales updated.' => 'Vendite promozionali aggiornate.', + 'Sales' => 'Vendite promozionali', + 'Save and continue editing' => 'Salva e continua modifiche', + 'Save and return to all orders' => 'Salva e torna a tutti gli ordini', + 'Save and set rules' => 'Salva e imposta regole', + 'Save as a new rule' => 'Salva come nuova regola', + 'Save product to all sites enabled for this product type' => 'Salva il prodotto in tutti i siti abilitati per questo tipo di prodotto', + 'Save product to other sites in the same site group' => 'Salva il prodotto su altri siti nello stesso gruppo di siti', + 'Save product to other sites with the same language' => 'Salva il prodotto su altri siti con la stessa lingua', + 'Save' => 'Salva', + 'Search customer…' => 'Cerca cliente…', + 'Search inventory' => 'Ricerca in inventario', + 'Search or enter customer email…' => 'Cerca o immetti l\'e-mail del cliente...', + 'Search…' => 'Ricerca...', + 'See Orders' => 'Visualizza ordini', + 'Select a gateway' => 'Seleziona un gateway', + 'Select a tax category.' => 'Selezionare una categoria fiscale.', + 'Select a tax zone. If empty, this rate will match anywhere.' => 'Seleziona una zona fiscale. Se l\'opzione è lasciata vuota, il tasso corrisponderà ovunque.', + 'Select address' => 'Seleziona indirizzo', + 'Select an item' => 'Seleziona un articolo', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'Seleziona la modalità di applicazione della regola di prezzo in catalogo al/i prodotto/i disponibile/i per l\'acquisto.', + 'Select how the sale will be applied to the purchasable(s).' => 'Scegli come applicare la vendita all’oggetto acquistabile/agli oggetti acquistabili.', + 'Select product type' => 'Seleziona tipo di prodotto', + 'Select the emails that will be sent when transitioning to this status.' => 'Selezionare le email per l’invio durante la transizione a questo stato.', + 'Select what this rate should be applied to.' => 'Seleziona dove applicare questa aliquota.', + 'Send Email' => 'Invia email', + 'Send to custom recipient' => 'Invia a destinatario personalizzato', + 'Send to the customer' => 'Invia al cliente', + 'Set Quantity' => 'Imposta quantità', + 'Set default category' => 'Imposta categoria predefinita', + 'Set default variant' => 'Imposta variante predefinita', + 'Set or Adjust' => 'Imposta o rettifica', + 'Set price' => 'Imposta prezzo', + 'Set status' => 'Imposta stato', + 'Set the price to a flat amount' => 'Imposta il prezzo su un importo forfettario', + 'Set the price to a percentage of the original price' => 'Imposta il prezzo su una percentuale del prezzo originale', + 'Set the sale price to a flat amount' => 'Imposta il prezzo di vendita su un importo forfettario', + 'Set the sale price to a percentage of the original price' => 'Imposta il prezzo di vendita su una percentuale del prezzo originale', + 'Set to' => 'Imposta su', + 'Settings saved.' => 'Impostazioni salvate.', + 'Settings' => 'Impostazioni', + 'Share cart…' => 'Condividi carrello...', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => 'Spedizione - Il costo minimo è il costo di spedizione applicato se il prezzo dell\'ordine è inferiore al costo di spedizione.', + 'Shipping Address Zone' => 'Zona dell\'indirizzo di spedizione', + 'Shipping Address' => 'Indirizzo di spedizione', + 'Shipping Business Name' => 'Nome azienda per la spedizione', + 'Shipping Categories' => 'Categorie di spedizione', + 'Shipping Category Conditions' => 'Condizioni della categoria di spedizione', + 'Shipping Category' => 'Categoria di spedizione', + 'Shipping First Name' => 'Nome di spedizione', + 'Shipping Full Name' => 'Nome completo di spedizione', + 'Shipping Last Name' => 'Cognome di spedizione', + 'Shipping Method' => 'Metodo di spedizione', + 'Shipping Methods' => 'Metodi di spedizione', + 'Shipping Rule' => 'Regola di spedizione', + 'Shipping Zones' => 'Aree di spedizione', + 'Shipping address required.' => 'Indirizzo di spedizione obbligatorio.', + 'Shipping categories deleted.' => 'Categorie di spedizione eliminate.', + 'Shipping category saved.' => 'Categoria di spedizione salvata.', + 'Shipping category updated.' => 'Categoria di spedizione aggiornata.', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'Costi di spedizione aggiunti all\'ordine come totale prima dell\'applicazione delle percentuali, dell\'articolo e delle tariffe in base al peso. Imposta su zero per disabilitare questa tariffa. L\'intera regola, tasso base incluso, non è valida e applicata se il carrello contiene esclusivamente articoli non soggetti a spedizione, come ad esempio prodotti digitali.', + 'Shipping method saved.' => 'Metodo di spedizione salvato.', + 'Shipping methods and rules deleted.' => 'Metodi di spedizione e regole eliminati.', + 'Shipping methods updated.' => 'Metodi di spedizione aggiornati.', + 'Shipping rule saved.' => 'Regola di spedizione salvata.', + 'Shipping zone saved.' => 'Area di spedizione salvata.', + 'Shipping' => 'Spedizione', + 'Short Number' => 'Numero breve', + 'Show Chart?' => 'Mostrare il grafico?', + 'Show Order Count?' => 'Mostrare il conteggio dell\'ordine?', + 'Show all prices' => 'Mostra tutti i prezzi', + 'Show archived gateways' => 'Mostra gateway archiviati', + 'Show order count line on chart.' => 'Mostra la riga di conteggio dell\'ordine sul grafico.', + 'Show related sales' => 'Mostra vendite collegate', + 'Show rule details' => 'Mostra dettagli della regola', + 'Show the Dimensions and Weight fields for products of this type' => 'Mostra i campi Dimensioni e Peso per i prodotti di questo tipo', + 'Show the Title field for products' => 'Mostra il campo Titolo per i prodotti', + 'Show the Title field for variants' => 'Mostra il campo Titolo per le varianti', + 'Signed In' => 'Accesso riuscito', + 'Site Languages' => 'Lingue del sito', + 'Site store mapping saved.' => 'Mappatura dello store del sito salvata.', + 'Sites' => 'Siti', + 'Slug' => 'Slug', + 'Snapshot' => 'Snapshot', + 'Snapshots' => 'Snapshot', + 'Some orders restored.' => 'Alcuni ordini ripristinati.', + 'Some products restored.' => 'Alcuni prodotti ripristinati.', + 'Some variants restored.' => 'Alcune varianti ripristinate.', + 'Something changed with the order before payment, please review your order and submit payment again.' => 'È cambiato qualcosa nell’ordine prima del pagamento. Controllare l’ordine e inviare nuovamente il pagamento.', + 'Sorry, no matching options.' => 'Spiacente, nessuna opzione corrispondente.', + 'Source - The purchasable relationship field is on the category' => 'Fonte - Il campo relazione prodotti disponibili all\'acquisto si trova sulla categoria', + 'Source' => 'Fonte', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Specifica una condizione Twig che determina se lo sconto deve essere applicato a un determinato ordine. (L\'ordine può essere referenziato tramite una variabile `order`.)', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Specifica una condizione Twig che determina se le regole di spedizione devono essere applicate a un determinato ordine. (L\'ordine può essere referenziato tramite una variabile `order`.)', + 'Start Date' => 'Data di inizio', + 'State' => 'Stato', + 'Status Email Address' => 'Indirizzo email stato', + 'Status Emails' => 'Email stato', + 'Status History' => 'Cronologia stato', + 'Status Updated.' => 'Stato aggiornato.', + 'Status change message' => 'Messaggio modifica stato', + 'Status' => 'Stato', + 'Stock' => 'Stock', + 'Stops Processing?' => 'Interrompe l’elaborazione?', + 'Stops subsequent?' => 'Interrompe i dati successivi?', + 'Store Location' => 'Posizione store', + 'Store Management' => 'Gestione dello store', + 'Store Markets' => 'Paesi in cui lo store vende', + 'Store Rule' => 'Regola dello store', + 'Store saved.' => 'Store salvato.', + 'Store' => 'Store', + 'Stores & Sites' => 'Store e siti', + 'Stores' => 'Store', + 'Strategy to apply when an order is free or has a zero balance.' => 'Strategia da applicare quando un ordine è gratuito o ha un saldo pari a zero.', + 'Strategy to apply when calculating the minimum order price.' => 'Strategia da applicare durante il calcolo del prezzo d\'ordine minimo.', + 'Subject' => 'Oggetto', + 'Subscribing user' => 'Utente che effettua la sottoscrizione', + 'Subscription Fields' => 'Campi della sottoscrizione', + 'Subscription Plans' => 'Piani di sottoscrizione', + 'Subscription Settings' => 'Impostazioni di sottoscrizione', + 'Subscription cancelled.' => 'Sottoscrizione annullata.', + 'Subscription date' => 'Data sottoscrizione', + 'Subscription fields saved.' => 'Campi di sottoscrizione salvati.', + 'Subscription for {user} to {plan} prevented by a plugin.' => 'Sottoscrizione per {user} a {plan} impedita da un plug-in.', + 'Subscription plan saved.' => 'Piano di sottoscrizione salvato.', + 'Subscription plan' => 'Piano di sottoscrizione', + 'Subscription plans' => 'Piani di sottoscrizione', + 'Subscription reactivated.' => 'Sottoscrizione riattivata.', + 'Subscription reference' => 'Riferimento della sottoscrizione', + 'Subscription started.' => 'Sottoscrizione avviata.', + 'Subscription switched.' => 'Sottoscrizione modificata.', + 'Subscription to “{plan}”' => 'Sottoscrizione di “{plan}”', + 'Subscription' => 'Sottoscrizione', + 'Subscriptions on hold' => 'Sottoscrizioni in sospeso', + 'Subscriptions' => 'Sottoscrizioni', + 'Suppress emails' => 'Nascondi email', + 'Switch plan' => 'Cambia piano', + 'Switch' => 'Cambia', + 'System' => 'Sistema', + 'Table Columns' => 'Colonne tabella', + 'Target - The category relationship field is on the purchasable' => 'Obiettivo - Il campo della relazione di categoria è sul prodotto disponibile all\'acquisto', + 'Tax & Shipping' => 'Imposta e spedizione', + 'Tax (inc)' => 'Imposta (inc.)', + 'Tax Categories' => 'Categorie fiscali', + 'Tax Category' => 'Categoria fiscale', + 'Tax Rates' => 'Aliquote fiscali', + 'Tax Zone' => 'Zona fiscale', + 'Tax Zones' => 'Zone fiscali', + 'Tax categories deleted.' => 'Categorie fiscali eliminate.', + 'Tax category saved.' => 'Categoria fiscale salvata.', + 'Tax category updated.' => 'Categoria fiscale aggiornata.', + 'Tax rate saved.' => 'Aliquota fiscale salvata.', + 'Tax rates updated.' => 'Aliquote fiscali aggiornate.', + 'Tax zone saved.' => 'Zona fiscale salvata.', + 'Tax' => 'Imposta', + 'Taxable Subject' => 'Imponibile', + 'Template Path' => 'Percorso al template', + 'That handle is already in use' => 'Handle già in uso', + 'That handle is already in use.' => 'Handle già in uso.', + 'The PDF to attach to this email.' => 'Il PDF da allegare a questa e-mail.', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => 'L\'url della pagina contenente la sezione di aggiornamento dei dettagli di fatturazione di una sottoscrizione e di gestione dell\'autenticazione 3DS.', + 'The address provided is outside the store’s market.' => 'L\'indirizzo fornito è al di fuori del mercato dello store.', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => 'L\'importo dello sconto che viene applicato all\'intero ordine. Questo importo è ripartito tra le varie voci in ordine di prezzo da quello più elevato a quello più ridotto, fino ad esaurimento dello sconto.', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => 'Lo sconto di base può solo scontare fino a zero gli articoli nel carrello fino ad esaurimento; non può rendere negativo l\'ordine.', + 'The cart recovery link is invalid. Please request a new one.' => 'Il link per il recupero del carrello non è valido. Richiedine uno nuovo.', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => 'Tasso di conversione che sarà usato per convertire un importo in questa valuta. Per esempio, se un articolo costa {amount1}, un tasso di conversione del {rate} darà come risultato {amount2} nella valuta alternativa.', + 'The countries that orders are allowed to be placed from.' => 'Paesi da cui è consentito inviare ordini.', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'Il coupon “{code}” ha superato il limite di utilizzo di {limit}.', + 'The customer for this order has been deleted.' => 'Il cliente associato a questo ordine è stato eliminato.', + 'The default shipping category is automatically available to all product types.' => 'La categoria di spedizione predefinita è automaticamente disponibile per tutti i tipi di prodotto.', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'Lo sconto “{name}” ha superato il limite totale di utilizzo di {limit}.', + 'The download link has expired. Please request a new one.' => 'Il link di download è scaduto. Richiedine uno nuovo.', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => 'Indirizzo email da cui vengono inviate le email di stato dell’ordine. Lasciare vuoto per utilizzare l’indirizzo email di sistema definito nelle Impostazioni generali di Craft.', + 'The entry that contains the description for this subscription’s plan.' => 'La Voce che contiene la descrizione di questo piano di sottoscrizione.', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => 'Importo forfettario corrispondente allo sconto applicabile a ciascun articolo, ovvero “3” per uno sconto di 3 $ su ciascun articolo.', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => 'Formato usato per generare nuovi codici promozionali, ad es., {example}. Eventuali caratteri `#` saranno sostituiti da lettere casuali.', + 'The from and to inventory locations must be different.' => 'Le sedi dell\'inventario da e verso devono essere diverse.', + 'The inventory locations this store uses.' => 'Le sedi dell\'inventario utilizzate da questo store.', + 'The item is not enabled for sale.' => 'L’articolo non è abilitato alla vendita.', + 'The language the order was made in.' => 'La lingua in cui è stato effettuato l\'ordine.', + 'The language to be used when this email is rendered.' => 'La lingua da utilizzare quando viene visualizzata questa email.', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'Il numero massimo di livelli che questo tipo di prodotto può avere. Lasciare in bianco se non ha importanza.', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => 'Importo massimo che il cliente dovrebbe spendere per la spedizione. Impostare su zero per disabilitare.', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => 'Importo minimo che il cliente dovrebbe spendere per la spedizione. Impostare su zero per disabilitare.', + 'The order is not valid.' => 'L\'ordine non è valido.', + 'The payment gateway that will be used for the subscription plan.' => 'Quale gateway di pagamento verrà utilizzato per il piano di sottoscrizione.', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => 'Il valore percentile da scontare per ogni articolo, cioè {ex1} per il {ex2} di sconto. Le percentuali sono arrotondate a 2 decimali.', + 'The previously-selected shipping method is no longer available.' => 'Il metodo di spedizione selezionato in precedenza non è più disponibile.', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Il prezzo di {description} è aumentato da {originalSalePriceAsCurrency} a {newSalePriceAsCurrency}', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Il prezzo di {description} è diminuito da {originalSalePriceAsCurrency} a {newSalePriceAsCurrency}', + 'The primary currency cannot be changed after orders are placed.' => 'La valuta principale non può essere modificata dopo il completamento degli ordini.', + 'The purchasable defines the relationship' => 'L\'articolo disponibile all\'acquisto definisce la relazione', + 'The purchasable is related by another element' => 'L\'articolo disponibile all\'acquisto è correlato a un altro elemento', + 'The recipient of the email. Twig code can be used here.' => 'Il destinatario dell\'email. Qui è possibile utilizzare il codice Twig.', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => 'L\'indirizzo e-mail di risposta. Lasciare vuoto questo campo per rispondere con l\'indirizzo standard al mittente dell\'email. Qui è possibile utilizzare il codice Twig.', + 'The site the order was made in.' => 'Il sito in cui è stato effettuato l\'ordine.', + 'The site to be used when this email is rendered.' => 'Il sito da utilizzare quando viene visualizzata questa email.', + 'The subject line of the email. Twig code can be used here.' => 'L\'oggetto dell\'email. Qui è possibile utilizzare il codice Twig.', + 'The template that the PDF should be generated from.' => 'Il template da cui deve essere generato il PDF.', + 'The template to be used for HTML emails.' => 'Template da usare per le email HTML.', + 'The template to be used for plain text emails. Twig code can be used here.' => 'Il template da usare per le email di testo semplice. Qui è possibile utilizzare il codice Twig.', + 'The template to use when a product’s URL is requested.' => 'Template da usare quando è richiesto l’URL di un prodotto.', + 'The total number of order adjustments changed.' => 'Numero totale di rettifiche ordine modificate.', + 'The total price of the order changed.' => 'Prezzo totale dell’ordine modificato.', + 'The total quantity of items within the order changed.' => 'Quantità totale di articoli nell’ordine modificata.', + 'The unique SKU of the donation purchasable.' => 'SKU univoco della donazione disponibile all\'acquisto.', + 'The unit of measurement that should be used when specifying product dimensions.' => 'Unità di misura che dovrebbe essere utilizzata quando si specificano le dimensioni dei prodotti.', + 'The unit of measurement that should be used when specifying product weights.' => 'Unità di misura che dovrebbe essere utilizzata quando si specificano i pesi dei prodotti.', + 'The webhook URL for this gateway.' => 'L’URL del webhook per questo gateway.', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => 'Nome “Da” che verrà utilizzato per l’invio delle email di stato dell’ordine. Lasciare vuoto per usare il nome del mittente definito nelle Impostazioni generali di Craft.', + 'There are errors on the order' => 'L\'ordine contiene degli errori', + 'There are only {num} “{description}” items left in stock.' => 'Ci sono solo {num} articoli “{description}” in stock.', + 'There aren’t any product types to select yet.' => 'Non ci sono ancora tipi di prodotto da selezionare.', + 'There is no gateway or payment source available for use with this order.' => 'Non è disponibile un gateway o una fonte di pagamento utilizzabile con questo ordine.', + 'There is no gateway selected that supports payment sources.' => 'Non è stato selezionato nessun gateway che supporti le fonti di pagamento.', + 'There is no shipping method selected for this order.' => 'Non è stato selezionato alcun metodo di spedizione per questo ordine.', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'Questo URL caricherà il carrello nella sessione dell\'utente, rendendolo il carrello attivo.', + 'This action is not allowed for the current user.' => 'Azione non consentita per l’utente corrente.', + 'This category will be used as the default for all purchasables in this store.' => 'Questa categoria verrà utilizzata come predefinita per tutti gli articoli disponibili all’acquisto in questo store.', + 'This coupon is for registered users and limited to {limit} uses.' => 'Questo coupon è riservato agli utenti registrati e limitato a {limit} utilizzi.', + 'This coupon is limited to {limit} uses.' => 'Questo coupon è limitato a {limit} utilizzi.', + 'This coupon requires an email address.' => 'Questo coupon richiede un indirizzo e-mail.', + 'This gateway does not support that functionality.' => 'Questo gateway non supporta tale funzionalità.', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'Questo è stato escluso dalle impostazioni di configurazione {setting} in `config/{file}.php`.', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'Questo è l’indirizzo del tuo store. Potrebbe essere utilizzato da vari plug-in per la determinazione, ad esempio, della spedizione e delle imposte. Potrebbe anche essere utilizzato nelle ricevute PDF.', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'Questo è il PDF predefinito che verrà visualizzato quando si richiede il PDF dell\'ordine.', + 'This is the last location for the {store} store.' => 'Questa è l\'ultima sede dello store {store}.', + 'This month' => 'Questo mese', + 'This order has unsaved changes.' => 'Quest\'ordine ha modifiche non salvate.', + 'This week' => 'Questa settimana', + 'This year' => 'Quest\'anno', + 'Times Used' => 'Numero di utilizzi', + 'Title' => 'Titolo', + 'To' => 'A', + 'Today' => 'Oggi', + 'Too many variants for this product.' => 'Troppe varianti per questo prodotto.', + 'Top Customers by Average Order' => 'Principali clienti per ordine medio', + 'Top Customers by Total Revenue' => 'Principali clienti per ricavi totali', + 'Top Customers' => 'Clienti principali', + 'Top Product Types by Qty Sold' => 'Tipi di prodotti principali più venduti per qtà vendute', + 'Top Product Types by Revenue' => 'Principali tipi di prodotti per ricavo', + 'Top Product Types' => 'Principali tipi di prodotti', + 'Top Products by Qty Sold' => 'Prodotti principali per qtà vendute', + 'Top Products by Revenue' => 'Principali prodotti per ricavo', + 'Top Products' => 'Prodotti principali', + 'Top Purchasables by Qty Sold' => 'Principali prodotti disponibili all\'acquisto per qtà vendute', + 'Top Purchasables by Revenue' => 'Principali prodotti disponibili all\'acquisto per ricavo', + 'Top Purchasables' => 'Principali prodotti disponibili all’acquisto', + 'Total ' => 'Totale ', + 'Total Discount Use Limit' => 'Limite totale di utilizzo sconto', + 'Total Discount' => 'Sconto totale', + 'Total Included Tax' => 'Totale imposta inclusa', + 'Total Orders by Billing Country' => 'Totale ordini per Paese di spedizione', + 'Total Orders by Country' => 'Totale ordini per Paese', + 'Total Orders by Shipping Country' => 'Totale ordini per Paese di spedizione', + 'Total Orders' => 'Ordini totali', + 'Total Paid' => 'Totale pagato', + 'Total Price' => 'Prezzo totale', + 'Total Qty' => 'Quantità totale', + 'Total Revenue' => 'Ricavi totali', + 'Total Shipping' => 'Totale spedizione', + 'Total Tax' => 'Totale imposta', + 'Total Weight' => 'Peso totale', + 'Total' => 'Totale', + 'Track Inventory' => 'Traccia inventario', + 'Transaction Hash' => 'Hash di transazione', + 'Transaction ID' => 'ID transazione', + 'Transaction captured successfully: {message}' => 'Transazione acquisita correttamente: {message}', + 'Transaction refunded successfully: {message}' => 'Transazione rimborsata correttamente: {message}', + 'Transactions' => 'Transazioni', + 'Transfer Fields' => 'Campi di trasferimento', + 'Transfer Items' => 'Voci di trasferimento', + 'Transfer Settings' => 'Impostazioni di trasferimento', + 'Transfer Status' => 'Stato di trasferimento', + 'Transfer fields saved.' => 'Campi di trasferimento salvati.', + 'Transfer must have at least one item.' => 'Il trasferimento deve avere almeno una voce.', + 'Transfer' => 'Trasferimento', + 'Transfers' => 'Trasferimenti', + 'Trial days credited' => 'Giorni di prova concessi', + 'Trial expiration' => 'Scadenza prova', + 'Trial expiry date' => 'Data di scadenza del periodo di prova', + 'Type not in allowed options.' => 'Tipo non incluso nelle opzioni consentite.', + 'Type' => 'Tipo', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => 'Al momento non è possibile annullare la sottoscrizione.', + 'Unable to complete order: another request is already in progress.' => 'Impossibile completare l\'ordine: è già in corso un\'altra richiesta.', + 'Unable to find variant.' => 'Impossibile trovare la variante.', + 'Unable to generate coupon codes: {message}' => 'Impossibile generare codici promozionali: {message}', + 'Unable to make payment at this time.' => 'Al momento non è possibile effettuare il pagamento.', + 'Unable to modify subscription at this time.' => 'Al momento non è possibile modificare la sottoscrizione.', + 'Unable to reactivate subscription at this time.' => 'Al momento non è possibile riattivare la sottoscrizione.', + 'Unable to reassign orders.' => 'Impossibile riassegnare gli ordini.', + 'Unable to remove order data.' => 'Impossibile eliminare i dati dell\'ordine.', + 'Unable to retrieve Sale and Purchasable.' => 'Impossibile recuperare Vendita promozionale e Disponibile all’acquisto.', + 'Unable to retrieve cart.' => 'Impossibile recuperare il carrello.', + 'Unable to retrieve customer.' => 'Impossibile recuperare il cliente.', + 'Unable to retrieve load cart URL' => 'Impossibile recuperare l\'URL del carrello caricato', + 'Unable to retrieve payment source.' => 'Impossibile recuperare fonte di pagamento.', + 'Unable to set default shipping category.' => 'Impossibile impostare la categoria di spedizione predefinita.', + 'Unable to set default tax category.' => 'Impossibile impostare la categoria d\'imposta predefinita.', + 'Unable to set primary payment source.' => 'Impossibile creare fonte di pagamento principale.', + 'Unable to start the subscription. Please check your payment details.' => 'Impossibile avviare la sottoscrizione. Controllare i dati di pagamento.', + 'Unable to subscribe at this time.' => 'Al momento non è possibile effettuare la sottoscrizione.', + 'Unable to update cart.' => 'Impossibile aggiornare il carrello.', + 'Unable to validate address.' => 'Impossibile convalidare l’indirizzo.', + 'Unit Price' => 'Prezzo unitario', + 'Unit price (minus discounts)' => 'Prezzo unitario (meno gli sconti)', + 'Units' => 'Unità', + 'Unpaid' => 'Non pagato', + 'Unsubscribe' => 'Annulla sottoscrizione', + 'Update Address' => 'Aggiorna indirizzo', + 'Update Order Status' => 'Aggiorna stato ordine', + 'Update Order Status…' => 'Aggiornamento stato ordine in corso...', + 'Update order' => 'Aggiorna ordine', + 'Update subscription' => 'Aggiorna sottoscrizione', + 'Update' => 'Aggiorna', + 'Updated By' => 'Aggiornato da', + 'Updated committed stock successfully.' => 'Aggiornamento dello stock impegnato completato correttamente.', + 'Updated' => 'Aggiornato', + 'Use Billing Address For Tax' => 'Usa l\'indirizzo di fatturazione per le imposte', + 'Use as the primary billing address' => 'Usa come indirizzo di fatturazione principale', + 'Use as the primary shipping address' => 'Usa come indirizzo di spedizione principale', + 'Used By Tax Rates' => 'Utilizzato per aliquote fiscali', + 'Used by Tax Rates' => 'Utilizzato per aliquote fiscali', + 'User Groups' => 'Gruppi di utenti', + 'User not found.' => 'Utente non trovato.', + 'User' => 'Utente', + 'Uses' => 'Utilizzi', + 'Validate Business Tax ID as Vat ID' => 'Convalida l\'ID fiscale dell\'azienda come ID IVA', + 'Validating condition syntax' => 'Convalida della sintassi della condizione', + 'Validating formula syntax' => 'Convalida della sintassi della formula', + 'Variant Fields' => 'Campi varianti', + 'Variant Has Untracked Stock' => 'La variante ha stock non tracciato', + 'Variant Price' => 'Prezzo variante', + 'Variant SKU' => 'SKU variante', + 'Variant Search' => 'Ricerca variante', + 'Variant Stock' => 'Stock variante', + 'Variant Title Format' => 'Formato titolo variante', + 'Variant Tracks Stock' => 'La variante traccia lo stock', + 'Variant UI Label Format' => 'Formato etichetta UI variante', + 'Variant has no product.' => 'La variante non ha prodotti.', + 'Variants not restored.' => 'Varianti non ripristinate.', + 'Variants restored.' => 'Varianti ripristinate.', + 'Variants' => 'Varianti', + 'View customer' => 'Visualizza cliente', + 'View order' => 'Visualizza ordine', + 'View product type - {productType}' => 'Visualizza il tipo di prodotto - {productType}', + 'View user' => 'Visualizza utente', + 'View' => 'Mostra', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => 'Attenzione, eliminando questa valuta verranno bloccati tutti i pagamenti e i rimborsi in questa valuta, sei sicuro di voler eliminare "{name}"?', + 'Web' => 'Web', + 'Webhook URL' => 'URL webhook', + 'Weight ({unit})' => 'Peso ({unit})', + 'Weight Rate' => 'Tariffa in base al peso', + 'Weight Unit' => 'Unità di peso', + 'Weight' => 'Peso', + 'What product URIs should look like for the site.' => 'L\'aspetto degli URL del prodotto per il sito.', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Aspetto dei titoli dei prodotti auto-generati. È possibile includere tag che producono le proprietà dei prodotti, come {ex1} o {ex2}. Tutti i campi personalizzati utilizzati devono essere impostati come obbligatori.', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Aspetto dei titoli delle varianti auto-generati. È possibile includere tag che producono le proprietà delle varanti, come {ex1} o {ex2}. Tutti i campi personalizzati utilizzati devono essere impostati come obbligatori.', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => 'Come dovrebbe apparire il nome del file PDF dell\'ordine (senza estensione). È possibile includere tag che producono le proprietà dell\'ordine, come {ex1} o {ex2}.', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'Aspetto degli SKU univoci auto-generati, quando un campo SKU viene inviato senza un valore. È possibile includere tag che producono proprietà, come {ex1} o {ex2}.', + 'What this PDF will be called in the control panel.' => 'Nome di questo PDF nel pannello di controllo.', + 'What this catalog pricing rule will be called in the control panel.' => 'Come si chiamerà questa regola di prezzo in catalogo nel pannello di controllo.', + 'What this discount will be called in the control panel.' => 'Nome di questo sconto nel pannello di controllo.', + 'What this email will be called in the control panel.' => 'Nome di questa email nel pannello di controllo.', + 'What this product type will be called in the control panel.' => 'Nome di questo tipo di prodotto nel pannello di controllo.', + 'What this sale will be called in the control panel.' => 'Nome di questa vendita promozionale nel pannello di controllo.', + 'What this shipping category will be called in the control panel.' => 'Come si chiamerà questa categoria di spedizione nel pannello di controllo.', + 'What this shipping rule will be called in the control panel.' => 'Come si chiamerà questa regola di spedizione nel pannello di controllo.', + 'What this shipping zone will be called in the control panel.' => 'Come si chiamerà questa zona di spedizione nel pannello di controllo.', + 'What this status will be called in the control panel.' => 'Nome di questo stato nel pannello di controllo.', + 'What this subscription plan will be called in the control panel.' => 'Nome di questo piano di sottoscrizione nel pannello di controllo.', + 'What this tax category will be called in the control panel.' => 'Come si chiamerà questa categoria fiscale nel pannello di controllo.', + 'What this tax zone will be called in the control panel.' => 'Come si chiamerà questa zona fiscale nel pannello di controllo.', + 'When this discount is applied to an order, which line items should be discounted?' => 'Quando questo sconto è applicato a un ordine, quali articoli è necessario scontare?', + 'Whether the first available shipping method option should be set automatically on carts.' => 'Definisce se la prima opzione di metodo di spedizione disponibile debba essere impostata automaticamente sui carrelli.', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'Definisce se il metodo di pagamento principale dell\'utente debba essere impostato automaticamente sui nuovi carrelli.', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'Definisce se gli indirizzi principali di spedizione e fatturazione dell\'utente debbano essere impostati automaticamente sui nuovi carrelli.', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => 'Se questa regola di prezzo in catalogo deve essere disponibile all’uso, indipendentemente da altre condizioni.', + 'Whether this sale should be available for use, regardless of other conditions.' => 'Se questa vendita deve essere disponibile all’uso, indipendentemente da altre condizioni.', + 'Which data to display in the name column in the results table.' => 'Quali dati visualizzare nella colonna del nome nella tabella dei risultati.', + 'Which product types should this category be available to?' => 'Per quali tipi di prodotto deve essere disponibile questa categoria?', + 'Which template should be loaded when a product’s URL is requested.' => 'Il template da caricare quando viene richiesto l\'URL di un prodotto.', + 'Width ({unit})' => 'Larghezza ({unit})', + 'Width' => 'Larghezza', + 'YYYY' => 'AAAA', + 'Yes' => 'Sì', + 'You are not allowed to add a line item.' => 'Non è consentito aggiungere una voce.', + 'You currently have no emails configured to select for this status.' => 'Attualmente non sono presenti e-mail configurate selezionabili per questo stato.', + 'You do not have permission to load this cart.' => 'Non disponi delle autorizzazioni necessarie per caricare questo carrello.', + 'You must set up at least one gateway that supports subscriptions first.' => 'Prima di tutto è necessario impostare almeno un gateway che supporti le sottoscrizioni.', + 'You must be logged in or provide a valid token to load this cart.' => 'Per caricare questo carrello è necessario effettuare l’accesso o presentare un token valido.', + 'You must be signed in to create a payment source.' => 'Per creare una fonte di pagamento è necessario effettuare l’accesso.', + 'You must be signed in to set a primary payment source.' => 'Per creare una fonte di pagamento principale è necessario effettuare l’accesso.', + 'You must make a payment to complete the order.' => 'È necessario effettuare un pagamento per completare l\'ordine.', + 'Your Cart Recovery Link' => 'Il tuo link per il recupero del carrello', + 'Your Order PDF Download Link' => 'Il tuo link di download PDF ordine', + 'Your order is empty' => 'Il tuo ordine è vuoto', + 'ZIP file' => 'File ZIP', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'Zero - Il prezzo minimo è zero se gli sconti sono di importo superiore al valore dell\'ordine.', + 'Zip Code' => 'CAP', + 'all' => 'tutti', + 'any' => 'qualsiasi', + 'average order total' => 'totale medio degli ordini', + 'billing address' => 'indirizzo di fatturazione', + 'donation' => 'donazione', + 'donations' => 'donazioni', + 'info' => 'informazioni', + 'inventory location' => 'sede dell\'inventario', + 'new customers' => 'nuovi clienti', + 'on hand' => 'disponibile', + 'only' => 'solo', + 'order' => 'ordine', + 'orders' => 'ordini', + 'price' => 'prezzo', + 'prices' => 'prezzi', + 'product variant' => 'variante prodotto', + 'product variants' => 'varianti prodotto', + 'product' => 'prodotto', + 'products' => 'prodotti', + 'repeat customers' => 'clienti abituali', + 'shipping address' => 'indirizzo di spedizione', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'È impossibile impostare sia shippingSameAsBilling che billingSameAsShipping.', + 'subscription' => 'sottoscrizione', + 'subscriptions' => 'sottoscrizioni', + 'to' => 'a', + 'transfer' => 'trasferisci', + 'transfers' => 'trasferimenti', + '{amount} included' => '{amount} incluso', + '{count} Unfulfilled Orders' => '{count} ordini non evasi', + '{description} is no longer available.' => '{description} non è più disponibile.', + '{description} only has {stock} in stock.' => 'Sono disponibili solo {stock} {description} a magazzino.', + '{from} to {to}' => 'Da {from} a {to}', + '{name} (Primary)' => '{name} (Primario)', + '{name} (Trashed)' => '{name} (Spostato nel cestino)', + '{name} catalog price' => '{name} prezzo in catalogo', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, one {}=1{ordine aggiornato} other{ordini aggiornati}}.', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, one {}=1{ordine è} other{ordini sono}} associato/i {numUsers, plural, one {}=1{all\'utente} other{agli utenti}}.', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, one {}=1{abbonamento è} other{abbonamenti sono}} attivato/i per {numUsers, plural, one {}=1{l\'utente} other{gli utenti}}.', + '{number} more…' => '{number} in più…', + '{pct} off the discounted item price' => '{pct} di sconto sul prezzo scontato dell\'articolo', + '{pct} off the original item price' => '{pct} di sconto sul prezzo originale dell\'articolo', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, one {}=1{non è stato assegnato} other{non sono stati assegnati}} a un sito.', + '{total} in total revenue' => '{total} in ricavi totali', + '{total} orders' => '{total} ordini', + '{total} saleable across {locationCount} location(s)' => '{total} vendibile in {locationCount} sede/i', + '{uses} uses across {emails} email addresses' => '{uses} utilizzi su {emails} indirizzi email', + '{uses} uses across {users} users' => '{uses} utilizzi da parte dei {users} clienti', + '“{description}” is currently out of stock.' => '“{description}” è attualmente esaurito.', + '“{key}” has invalid JSON' => '“{key}” ha un JSON non valido', +]; diff --git a/lang/ja/commerce.php b/lang/ja/commerce.php new file mode 100644 index 0000000000..bc1704e385 --- /dev/null +++ b/lang/ja/commerce.php @@ -0,0 +1,1423 @@ + '(新しい価格)', + '(of original price)' => '(値引き)', + '(off original price)' => '(元の価格からの割引)', + 'A cart number must be specified.' => 'カート番号を指定してください。', + 'A cart recovery link has been sent to {email}.' => 'カート復元リンクを{email}宛に送信しました。', + 'A cart recovery link will be sent to {email}.' => 'カート復元リンクを{email}宛に送信します。', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'カートが注文に変わると、このフォーマットに基づいて管理しやすい参照番号が生成されます。たとえば、{ex1}、または
{ex2}。このフォーマットの結果は一意でなければなりません。', + 'A new download link has been sent to {email}' => '新しいダウンロードリンクを {email} 宛に送信しました', + 'A new download link will be sent to {email}' => '新しいダウンロードリンクを {email} 宛に送信します', + 'A valid email is required to create a customer.' => '顧客を作成するために有効なメールが必要です。', + 'Accept' => '受け入れる', + 'Accepted' => '受け入れ済み', + 'Actions' => 'アクション', + 'Active Carts' => 'アクティブなカート', + 'Active subscriptions' => 'アクティブな定期支払い', + 'Active' => '有効', + 'Add Address' => '住所を追加', + 'Add a coupon' => 'クーポンを追加', + 'Add a custom line item' => 'カスタムラインアイテムを追加', + 'Add a line item' => 'ラインアイテムを追加', + 'Add a product' => '商品を追加', + 'Add a variant' => 'バリアントを追加', + 'Add an adjustment' => 'アジャストメントを追加', + 'Add an item' => 'アイテムを追加', + 'Add an option' => 'オプションを追加', + 'Add catalog price' => 'カテゴリ価格を追加', + 'Add' => '追加', + 'Additional Actions' => '追加のアクション', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'このメールを受信するその他の受信者。ここに Twig コードを使用できます。', + 'Address 1' => '住所1', + 'Address 2' => '住所2', + 'Address 3' => '住所3', + 'Address Line 1' => '住所欄1', + 'Address Line 2' => '住所欄2', + 'Address Updated.' => '住所が更新されました。', + 'Address copied to user.' => 'アドレスをユーザーにコピーしました。', + 'Address not found.' => '住所が見つかりません。', + 'Adjust Quantity' => '数量を調整', + 'Adjust by' => '調整方法', + 'Adjust price when included rate is disqualified?' => '税込料金が不適格である場合、価格を調整しますか?', + 'Adjustments' => 'アジャストメント', + 'Admin Notices' => '管理者通知', + 'Administrative Area Code of Origin' => '原産地の行政区画のエリアコード', + 'Advanced' => '高度', + 'All Orders' => 'すべての注文', + 'All Totals' => 'すべての合計', + 'All Transfers' => 'すべての移動', + 'All active subscriptions' => 'すべての有効な定期支払い', + 'All customers' => 'すべての顧客', + 'All products' => 'すべての商品', + 'All variants must have a SKU.' => 'すべてのバリアントにはSKUが必要です。', + 'All' => 'すべて', + 'Allow Checkout Without Payment' => '支払いなしでのチェックアウトを許可する', + 'Allow Empty Cart On Checkout' => 'チェックアウト時の空のカートを許可する', + 'Allow Partial Payment On Checkout' => 'チェックアウトで一部支払いを許可する', + 'Allow out of stock purchases' => '在庫切れ商品の購入を許可する', + 'Allow' => '許可', + 'Allowed Qty' => '許可する数量', + 'Alternative Phone' => '予備の電話', + 'Amount' => '量', + 'An ID must be provided' => 'ID を指定してください', + 'An error occurred while generating this PDF.' => 'この PDF を生成中にエラーが発生しました。', + 'Any' => 'すべて', + 'Anywhere' => '指定なし', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => '定期支払いプラン「{name}」をアーカイブしてもよろしいですか?既存の定期支払いはキャンセルされません。', + 'Are you sure you want to capture this transaction?' => 'この取引をキャプチャしてもよろしいですか?', + 'Are you sure you want to complete this order?' => 'この注文を完了してもよろしいですか?', + 'Are you sure you want to delete the selected orders?' => '選択した注文を削除してもよろしいですか?', + 'Are you sure you want to delete the selected product and its variants?' => '選択した商品とそのバリアントを削除してもよろしいですか?', + 'Are you sure you want to delete this shipping rule?' => 'この配送ルールを削除してもよろしいですか?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => '「{name}」とそのすべての商品を削除してもよろしいですか?この取り消しできない処理を実行する前に、データベースのバックアップがあることを確認してください。', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => '「{name}」を削除してよろしいですか? このステータスのあるすべてのラインアイテムがステータス無しに設定されます。', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'この移動を保留中としてマークしてもよろしいですか?これは移動先で入庫予定として表示されます。', + 'Are you sure you want to overwrite the billing address?' => 'この請求先住所を上書きしてよろしいですか?', + 'Are you sure you want to overwrite the shipping address?' => 'この配送先住所を上書きしてよろしいですか?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'このストアとストアのすべてを完全に削除してもよろしいですか?', + 'Are you sure you want to refund this transaction?' => 'この取引を払い戻ししてもよろしいですか?', + 'Are you sure you want to remove this customer?' => 'この顧客を削除してもよろしいですか?', + 'Are you sure you want to save this as a new shipping rule?' => '新しい配送ルールとして保存してもよろしいですか?', + 'Are you sure you want to send email: {name}?' => '「{name}」メールを送信してもよろしいですか?', + 'At least one site must be enabled for the product type.' => '商品タイプには少なくとも1つのサイトを有効にする必要があります。', + 'Attempted Payments' => '試行された支払い', + 'Attention' => '部署名', + 'Authorize Only (Manually Capture)' => '承認のみ(手動キャプチャ)', + 'Auto Set Cart Shipping Method Option' => 'カート配送方法オプションを自動設定する', + 'Auto Set New Cart Addresses' => '新規カート住所を自動設定する', + 'Auto Set Payment Source' => '支払い元を自動設定する', + 'Automatic SKU Format' => 'SKUの自動フォーマット', + 'Available Shipping Categories' => '利用可能な配送カテゴリ', + 'Available Tax Categories' => '利用可能な税カテゴリ', + 'Available for purchase' => '購入可能', + 'Available for purchase?' => '購入可能にしますか?', + 'Available inventory for "{description}" has gone below zero.' => '「{description}」の利用可能在庫が0を下回っています。', + 'Available to Product Types' => '商品タイプで利用可能', + 'Available' => '利用可能', + 'Available?' => '購入可能?', + 'Average Order Total' => '注文合計平均', + 'Average' => '平均', + 'BCC’d Recipient' => 'BCC宛先', + 'Bad Request' => '不正なリクエスト', + 'Bad address ID.' => '不正な住所 ID です。', + 'Bad order ID.' => '不正な注文 ID です。', + 'Base Price' => '最安価格', + 'Base Promotional Price' => 'ベース販売促進価格', + 'Base Rate' => '基本料金', + 'Base' => '基本', + 'Bcc' => 'Bcc', + 'Billing Address' => '請求先住所', + 'Billing Business Name' => '請求先会社名', + 'Billing First Name' => '請求先の名', + 'Billing Full Name' => '請求先氏名', + 'Billing Last Name' => '請求先の姓', + 'Billing address required.' => '請求先住所が必要です。', + 'Billing detail update URL' => '課金詳細更新URL', + 'Billing issues' => '請求に関する問題', + 'Billing' => '請求先', + 'Both (Line item price + Line item shipping costs)' => '両方(ラインアイテム価格 + ラインアイテム配送料)', + 'Business ID' => '事業者ID', + 'Business Name' => '事業名', + 'Business Tax ID' => '事業税ID', + 'CC’d Recipient' => 'CC宛先', + 'CVV' => 'CVV', + 'Can be used as an internal reference.' => '内部で参照するために使用されます。', + 'Can not complete payment for missing transaction.' => '取引が見つからないため、支払いを完了できません。', + 'Can not create a new order' => '新しい注文を作成できません', + 'Can not find an order to pay.' => '支払う注文が見つかりません。', + 'Can not find enabled email.' => '有効なメールが見つかりません。', + 'Can not find order' => '注文が見つかりません', + 'Can not find order.' => '注文が見つかりません.', + 'Can not find the transaction to refund' => '払い戻しする取引が見つかりません', + 'Can not move between these inventory types.' => 'これらの在庫タイプ間は移動できません。', + 'Can not refund amount greater than the remaining amount' => '残金を上回る金額を払戻しできません', + 'Cancel subscription' => '定期支払いをキャンセルする', + 'Cancel with gateway now' => '今すぐゲートウェイでキャンセル', + 'Cancel' => 'キャンセル', + 'Cancellation date' => 'キャンセルした日付', + 'Cancellation' => 'キャンセル', + 'Cannot switch plans for this subscription.' => 'この定期支払いのプランを切り替えることはできません。', + 'Can’t preview this email.' => 'このメールはプレビューできません。', + 'Capture payment' => '支払いをキャプチャ', + 'Capture' => 'キャプチャ', + 'Card Holder' => 'カード名義人', + 'Card Number' => 'カード番号', + 'Card' => 'カード', + 'Cart Recovery Link' => 'カート復元リンク', + 'Cart forgotten.' => '忘れられたカート。', + 'Cart updated.' => 'カートが更新されました。', + 'Cart {number}' => 'カート{number}', + 'Catalog Pricing Rule' => 'カタログ価格ルール', + 'Catalog pricing rule description.' => 'カタログ価格ルールの説明。', + 'Catalog pricing rule saved.' => 'カタログ価格ルールを保存しました。', + 'Catalog pricing rules deleted.' => 'カタログ価格ルールを削除しました。', + 'Catalog pricing rules updated.' => 'カタログ価格ルールを更新しました。', + 'Categories Relationship Type' => 'カテゴリの関係付けタイプ', + 'Categories' => 'カテゴリ', + 'Category Rate Overrides' => 'カテゴリの料金上書き', + 'Centimeters (cm)' => 'センチメートル(cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'この値を変更すると、既存の取引の払い戻し機能に影響する場合があります。', + 'Choose a color to represent the order’s status' => '注文ステータスのカラーを選んでください', + 'Choose a new customer' => '新しい顧客を選択', + 'Choose adjustment values to include when calculating the product revenue total.' => '商品の合計収益を計算する際に含める調整値を選択してください。', + 'Choose the currency’s ISO code.' => 'この国のISOコードを選択してください。', + 'Choose the destination inventory location for the existing on hand stock.' => '宛先の既存の手持ち在庫の在庫場所を選択してください。', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'このセクションを表示可能にする商品タイプを選択して、サイト固有の設定を行ってください。', + 'City' => '市区町村', + 'Clear counter' => 'カウントをリセットする', + 'Clear notices' => '通知をクリア', + 'Close' => '閉じる', + 'Code' => 'コード', + 'Collated PDF' => '照合済みの PDF', + 'Color' => 'カラー', + 'Commerce Products' => 'Commerce 商品', + 'Commerce Settings' => 'コマース設定', + 'Commerce Variants' => 'Commerce バリアント', + 'Commerce email “{email}” could not be sent for order “{order}”.' => '注文「{order}」の Commerce メール「{email}」を送信できませんでした。', + 'Commerce order exports' => 'Commerce 注文のエクスポート', + 'Commerce' => 'Commerce', + 'Committed' => 'コミット済み', + 'Completed Email' => '完了したメール', + 'Completed' => '完了', + 'Completing order failed.' => '注文の完了に失敗しました。', + 'Condition' => '条件', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'ここでの条件は、ルールを調べる前に注文に対して照合されます。これは、前もってメソッドの可用性を評価する場合、またはこのメソッドに対してすべてのルールに共通の条件がある場合に役立ちます。', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'ここで設定した条件は、ルールを確認する前に注文の顧客情報と照合されます。これは、メソッドの利用可否を早い段階で判断したい場合や、このメソッドに適用されるすべてのルールに共通する条件を設けたい場合に便利です。', + 'Conditions' => '条件', + 'Contains Purchasables' => '購入可能商品を含む', + 'Control Panel Settings' => 'コントロールパネルの設定', + 'Control panel' => 'コントロールパネル', + 'Conversion Rate' => '換算レート', + 'Converted Price' => '換算価格', + 'Copied!' => 'コピーしました!', + 'Copy the URL' => 'URL をコピー', + 'Copy to {location}' => '{location}へコピー', + 'Copy' => 'コピー', + 'Costs' => '料金', + 'Could not archive gateway.' => 'ゲートウェイをアーカイブできませんでした。', + 'Could not cancel “{reference}”.' => '「{reference}」をキャンセルできませんでした。', + 'Could not create the payment source.' => '支払い元を作成できませんでした。', + 'Could not delete shipping rule' => '配送ルールを削除できませんでした', + 'Could not delete shipping zone' => '配送地域を削除できませんでした', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => '{count, number}件の配送{count, plural, one{カテゴリ} other{カテゴリ}}を削除できませんでした。', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => '{count, number}件の配送{count, plural, one{方法} other{方法}}とルールを削除できませんでした。', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => '{count, number}件の税{count, plural, one{カテゴリ} other{カテゴリ}}を削除できませんでした。', + 'Could not find the email or template.' => 'メールまたはテンプレートが見つかりませんでした。', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => '注文 {number} を完了としてマークできませんでした。注文完了中、注文の保存はエラーにより失敗しました: {order}', + 'Could not reactivate “{reference}”.' => '「{reference}」を再度有効にできませんでした。', + 'Could not send email' => 'メールを送信できませんでした', + 'Could not switch “{reference}” to “{plan}”.' => '「{reference}」を「{plan}」に切り替えることができませんでした。', + 'Could not update orders address.' => '注文の住所を更新できませんでした。', + 'Couldn’t archive Line Item Status.' => 'ラインアイテムのステータスをアーカイブできませんでした。', + 'Couldn’t archive Order Status.' => '注文ステータスをアーカイブできませんでした。', + 'Couldn’t capture transaction.' => '取引をキャプチャできませんでした。', + 'Couldn’t capture transaction: {message}' => '取引をキャプチャできませんでした: {message}', + 'Couldn’t delete email.' => 'メールを削除できませんでした。', + 'Couldn’t delete the payment source.' => '支払い元を削除できませんでした。', + 'Couldn’t get order.' => '注文を取得できませんでした。', + 'Couldn’t recalculate order.' => '注文を再計算できませんでした。', + 'Couldn’t refund transaction.' => '取引を払い戻しできませんでした。', + 'Couldn’t refund transaction: {message}' => '取引を払い戻しできませんでした: {message}', + 'Couldn’t reorder Line Item Statuses.' => 'ラインアイテムのステータスを並び替えできませんでした。', + 'Couldn’t reorder Order Statuses.' => '注文ステータスを並び替えできませんでした。', + 'Couldn’t reorder PDFs.' => 'PDF を並び替えできませんでした。', + 'Couldn’t reorder discounts.' => 'ディスカウントを並び替えできませんでした。', + 'Couldn’t reorder gateways.' => 'ゲートウェイを並び替えできませんでした。', + 'Couldn’t reorder plans.' => 'プランを並び替えできませんでした。', + 'Couldn’t reorder rules.' => 'ルールを並び替えできませんでした。', + 'Couldn’t reorder sale.' => 'セールを並び替えできませんでした。', + 'Couldn’t reorder sales.' => 'セールを並び替えできませんでした。', + 'Couldn’t reorder statuses.' => 'ステータスを並び替えできませんでした。', + 'Couldn’t reorder stores.' => 'ストアを並び替えできませんでした。', + 'Couldn’t save PDF.' => 'PDF を保存できませんでした。', + 'Couldn’t save catalog pricing rule.' => 'カタログ価格ルールを保存できませんでした。', + 'Couldn’t save currency.' => '通貨を保存できませんでした。', + 'Couldn’t save discount.' => 'ディスカウントを保存できませんでした。', + 'Couldn’t save email.' => 'メールを保存できませんでした。', + 'Couldn’t save gateway.' => 'ゲートウェイを保存できませんでした。', + 'Couldn’t save inventory location.' => '在庫場所を保存できませんでした。', + 'Couldn’t save line item status.' => 'ラインアイテムのステータスを保存できませんでした。', + 'Couldn’t save order fields.' => '注文フィールドを保存できませんでした。', + 'Couldn’t save order status.' => '注文ステータスを更新できませんでした。', + 'Couldn’t save order.' => '注文を保存できませんでした。', + 'Couldn’t save product type.' => '商品タイプを保存できませんでした。', + 'Couldn’t save sale.' => 'セールを保存できませんでした。', + 'Couldn’t save settings.' => '設定を保存できませんでした。', + 'Couldn’t save shipping category.' => '配送カテゴリを保存できませんでした。', + 'Couldn’t save shipping method.' => '配送方法を保存できませんでした。', + 'Couldn’t save shipping rule.' => '配送ルールを保存できませんでした。', + 'Couldn’t save shipping zone.' => '配送地域を保存できませんでした。', + 'Couldn’t save store.' => 'ストアを保存できませんでした。', + 'Couldn’t save subscription fields.' => '定期支払いフィールドを保存できませんでした。', + 'Couldn’t save subscription plan.' => '定期支払いプランを保存できませんでした。', + 'Couldn’t save subscription.' => '定期支払いを保存できませんでした。', + 'Couldn’t save tax category.' => '税カテゴリを保存できませんでした。', + 'Couldn’t save tax rate.' => '税率を保存できませんでした。', + 'Couldn’t save tax zone.' => '税対象地域を保存できませんでした。', + 'Couldn’t save transfer fields.' => '移動フィールドを保存できませんでした。', + 'Couldn’t update catalog pricing rule statuses.' => 'カタログ価格ルールのステータスを更新できませんでした。', + 'Couldn’t update status.' => 'ステータスを更新できませんでした。', + 'Couldn’t updated sales status.' => 'セールのステータスを更新できませんでした。', + 'Country Code of Origin' => '原産国コード', + 'Country List' => '国リスト', + 'Country not allowed.' => '許可されていない国です。', + 'Country' => '国', + 'Coupon Code' => 'クーポンコード', + 'Coupon can not apply discount to this order due to address mismatch.' => 'アドレスが一致しなかったため、この注文にはクーポンのディスカウントを適用できません。', + 'Coupon can not apply discount to this order due to customer mismatch.' => '顧客が一致しなかったため、この注文にはクーポンのディスカウントを適用できません。', + 'Coupon can not apply discount to this order.' => 'この注文にはクーポンのディスカウントを適用できません。', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'クーポンコード「{code}」はディスカウント「{name}」によってすでに使用されています。', + 'Coupon codes cannot be blank.' => 'クーポンコードは空白にできません。', + 'Coupon codes must be unique.' => 'クーポンコードは一意でなければなりません。', + 'Coupon format is required and must contain at least one `#`.' => 'クーポンフォーマットが必要で、少なくとも1つの「#」を含んでいなければなりません。', + 'Coupon not valid.' => 'クーポンが有効ではありません。', + 'Coupon removed: {explanation}' => 'クーポンが削除されました:{explanation}', + 'Coupons' => 'クーポン', + 'Craft Commerce - Administration' => 'Craft Commerce - 管理', + 'Craft Commerce - Inventory' => 'Craft Commerce - 在庫', + 'Craft Commerce - Orders' => 'Craft Commerce - 注文', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce - 商品タイプ - {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce - サブスクリプション', + 'Create a Discount' => 'ディスカウントを作成', + 'Create a Subscription Plan' => '定期支払いプランを作成', + 'Create a new PDF' => '新しい PDF を作成', + 'Create a new catalog pricing rule' => '新規カタログ価格ルールを作成', + 'Create a new currency' => '新しい通貨を作成', + 'Create a new email' => '新しいメールを作成', + 'Create a new gateway' => '新しいゲートウェイを作成', + 'Create a new line item status' => '新しいラインアイテムのステータスを作成', + 'Create a new order status' => '新しい注文ステータスを作成', + 'Create a new product type' => '新しい商品タイプを作成する', + 'Create a new sale' => '新しいセールを作成', + 'Create a new shipping category' => '新しい配送カテゴリを作成', + 'Create a new shipping method' => '新しい配送方法を作成', + 'Create a new shipping rule' => '新しい配送ルールを作成', + 'Create a new tax category' => '新しい税カテゴリを作成する', + 'Create a new tax rate' => '新しい税率を作成', + 'Create a product type' => '商品タイプを作成', + 'Create a shipping zone' => '配送地域を作成', + 'Create a tax zone' => '税対象地域を作成', + 'Create catalog pricing rules' => 'カタログ価格ルールを作成', + 'Create customer: “{email}”' => '顧客を作成: 「{email}」', + 'Create discounts' => 'ディスカウントを作成', + 'Create discount…' => 'ディスカウントを作成…', + 'Create rules that allow this discount to match the order.' => 'このディスカウントを注文に一致させるルールを作成します。', + 'Create rules that allow this discount to match the order’s billing address.' => 'このディスカウントを注文の請求先住所に一致させるルールを作成します。', + 'Create rules that allow this discount to match the order’s customer.' => 'このディスカウントを注文の顧客に一致させるルールを作成します。', + 'Create rules that allow this discount to match the order’s shipping address.' => 'このディスカウントを注文の配送先住所に一致させるルールを作成します。', + 'Create rules that allow this gateway to match the billing address.' => 'このゲートウェイを請求先住所と一致させるルールを作成します。', + 'Create rules that allow this gateway to match the order.' => 'このゲートウェイを注文に一致させるルールを作成します。', + 'Create rules that allow this gateway to match the shipping address.' => 'このゲートウェイを配送先住所と一致させるルールを作成します。', + 'Create sales' => 'セールを作成', + 'Create sale…' => 'セールを作成…', + 'Created' => '作成済み', + 'Credit Card Payment Type' => 'クレジットカード決済のタイプ', + 'Currency Code' => '通貨コード', + 'Currency saved.' => '通貨は保存されました。', + 'Currency' => '通貨', + 'Current' => '現在', + 'Custom 1' => 'カスタム1', + 'Custom 2' => 'カスタム2', + 'Custom 3' => 'カスタム3', + 'Custom 4' => 'カスタム4', + 'Custom' => 'カスタム', + 'Customer Enabled?' => '顧客が利用可能?', + 'Customer ID is required.' => '顧客 ID が必要です。', + 'Customer Note' => '顧客ノート', + 'Customer Notices' => '顧客の通知', + 'Customer data' => '顧客データ', + 'Customer' => '顧客', + 'Damaged' => '破損', + 'Data shown might be outdated.' => '表示データは古い可能性があります。', + 'Date Authorized' => 'オーソリ日', + 'Date Created' => '作成日', + 'Date First Paid' => '初回支払い日', + 'Date Ordered' => '注文日', + 'Date Paid' => '支払日', + 'Date Updated' => '更新日', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'カタログ価格ルールが有効になる日付。開始日を指定しない場合は空白のままにします。', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'ディスカウントが有効になる日付。開始日を指定しない場合は空白のままにします。', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'セールが有効になる日付。開始日を指定しない場合は空白のままにします。', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'カタログ価格ルールが終了する日付。終了日を指定しない場合は空白のままにします。', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'ディスカウントが終了する日付。終了日を指定しない場合は空白のままにします。', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'セールが終了する日付。終了日を指定しない場合は空白のままにします。', + 'Date' => '日時', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'デフォルト - ディスカウントが注文価格より上回る場合は価格を負にすることができます。', + 'Default Category' => 'デフォルトのカテゴリ', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'デフォルトの Commerce コントロールパネルビュー。ユーザーに権限がない場合、アクセスできる場所にフォールバックします。', + 'Default Order PDF' => 'デフォルトの注文PDF', + 'Default Per Item Rate' => 'デフォルトのアイテムごとの料金', + 'Default Percentage Rate' => 'デフォルトパーセント率', + 'Default Status?' => 'デフォルトのステータス?', + 'Default View' => 'デフォルトのビュー', + 'Default Weight Rate' => 'デフォルトの重量ごとの料金', + 'Default Zone' => 'デフォルトの地域', + 'Default status?' => 'デフォルトのステータス?', + 'Default to this tax zone when no billing address is set' => '請求先住所が設定されていない場合は、この税対象地域がデフォルトになります', + 'Default to this tax zone when no shipping address is set' => '配送先住所が設定されていない場合は、この税対象地域がデフォルトになります', + 'Default variant updated.' => 'デフォルトバリアントが更新されました。', + 'Default' => 'デフォルト', + 'Default?' => 'デフォルト?', + 'Delete catalog pricing rules' => 'カタログ価格ルールを削除', + 'Delete discounts' => 'ディスカウントを削除', + 'Delete orders' => '注文を削除', + 'Delete sales' => 'セールを削除', + 'Delete' => '削除', + 'Deleting the {location} location.' => '{location}の場所を削除しています。', + 'Describe this rule.' => 'このルールについて説明してください。', + 'Describe this shipping zone.' => 'この配送地域について説明してください。', + 'Describe this tax zone.' => 'この税対象地域について説明してください。', + 'Description' => '説明', + 'Destination Inventory Location' => '宛先の在庫場所', + 'Destination' => '宛先', + 'Details' => '詳細', + 'Dimension Unit' => '寸法の単位', + 'Dimensions' => '寸法', + 'Disabled' => '無効', + 'Disallow' => '許可しない', + 'Discount all line items' => 'すべてのラインアイテムをディスカウント', + 'Discount description.' => 'ディスカウントの説明。', + 'Discount is not allowed for the order' => '注文のディスカウントは許可されていません', + 'Discount is out of date.' => 'ディスカウントは期限切れです。', + 'Discount saved.' => 'ディスカウントは保存されました。', + 'Discount the matching items only' => '一致アイテムのみをディスカウント', + 'Discount use has reached its limit.' => 'ディスカウントの使用回数が限界に達しました。', + 'Discount' => 'ディスカウント', + 'Discounted Item Subtotal' => 'ディスカウント済みアイテムの小計', + 'Discounted Items' => 'ディスカウントされたアイテム', + 'Discounts deleted.' => 'ディスカウントを削除しました。', + 'Discounts reordered.' => 'ディスカウントを並び替えました。', + 'Discounts updated.' => 'ディスカウントが更新されました。', + 'Discounts' => 'ディスカウント', + 'Disqualify with valid business tax ID?' => '有効な事業税 ID で不適格にしますか?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'このセールを適用した場合、その後のセールを適用しない。', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => '注文の住所が選択された有効な事業税 ID のものである場合は、この税率を適用しないでください。', + 'Do not attach a PDF to this email' => 'このメールに PDF を添付しないでください', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'エラーがある場合、注文(番号: {orderNumber})の再計算を実行しないでください。', + 'Donation can not be zero.' => '寄付はゼロにできません。', + 'Donation needs to be an amount.' => '寄付は金額です。', + 'Donation settings saved.' => '寄付の設定が保存されました。', + 'Donation' => '寄付', + 'Donations' => '寄付', + 'Done' => '完了', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'このディスカウントが適用された場合、その後のディスカウントを注文に適用しない。', + 'Download PDF' => 'PDFをダウンロード', + 'Download PDF…' => 'PDF をダウンロード...', + 'Download Type' => 'ダウンロードタイプ', + 'Download' => 'ダウンロード', + 'Draft' => '下書き', + 'Dummy gateway payment failed.' => 'ダミーゲートウェアの支払いに失敗しました。', + 'Duplicate options exist' => '重複したオプションがあります', + 'Duration' => '期間', + 'EU VAT ID' => 'EU VAT ID', + 'Edit address' => '住所を編集する', + 'Edit adjustments' => '調整を編集', + 'Edit catalog pricing rules' => 'カタログ価格ルールを編集', + 'Edit discounts' => 'ディスカウントを編集', + 'Edit options' => 'オプションを編集する', + 'Edit orders' => '注文を編集', + 'Edit sales' => 'セールを編集', + 'Edit' => '編集', + 'Effect' => '効果', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'いずれか(デフォルト)- 関連フィールドはパーチャサブルまたはカテゴリにあります', + 'Either way' => 'どちらでもいい', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'メール「{email}」に対し、メール PDF の生成エラーが発生しました。注文: “{order}”。PDF テンプレートエラー: 「{message}」{file}:{line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'メール「{email}」のメール PDF のテンプレートは「{templatePath}」に存在しません。注文:「{order}」。', + 'Email Subject' => 'メールの件名', + 'Email error. No email address found for order. Order: “{order}”' => 'メールエラー。注文のメールアドレスがありません。注文: “{order}”', + 'Email is not enabled.' => 'メールが無効です。', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'プレーンテキスト形式のメールテンプレートは「{templatePath}」に存在しません。メール「{email}」の「{templateParsedPath}」に解析されています。注文: 「{order}」。', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'メール「{email}」に対し、プレーンテキスト形式メールのテンプレートの解析エラーが発生しました。注文: “{order}”。テンプレートエラー: “{message}” {file}:{line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => '「テンプレートパス」のメール「{email}」に対し、プレーンテキスト形式メールのテンプレートパスの解析エラーが発生しました。注文:「{order}」。テンプレートエラー:「{message}」{file}:{line}', + 'Email required to make payments on a completed order.' => '完了した注文に対する支払いに必要なメール。', + 'Email saved.' => 'メールが保存されました。', + 'Email sent' => 'メールが送信されました', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'メールテンプレートは「{templatePath}」に存在しません。メール「{email}」の「{templateParsedPath}」に解析されています。注文: 「{order}」。', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => '「To:」 のカスタムメール 「{email}」に対し、メールテンプレートの解析エラーが発生しました。注文: 「{order}」。テンプレートエラー: 「{message}」{file}:{line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => '「BCC:」 のメール 「{email}」に対し、メールテンプレートの解析エラーが発生しました。注文: 「{order}」。テンプレートエラー: 「{message}」{file}:{line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => '「CC:」 のメール 「{email}」に対し、メールテンプレートの解析エラーが発生しました。注文: 「{order}」。テンプレートエラー: 「{message}」{file}:{line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => '「ReplyTo:」 のメール 「{email}」に対し、メールテンプレートの解析エラーが発生しました。注文: 「{order}」。テンプレートエラー: 「{message}」{file}:{line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => '「Subject:」 のメール 「{email}」に対し、メールテンプレートの解析エラーが発生しました。注文: 「{order}」。テンプレートエラー: 「{message}」{file}:{line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'メール「{email}」に対し、メールテンプレートの解析エラーが発生しました。注文: “{order}”。テンプレートエラー: “{message}” {file}:{line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => '“Template Path” のメール “{email}” に対し、メールテンプレートのパスの解析エラーが発生しました。注文: “{order}”。テンプレートエラー: “{message}” {file}:{line}', + 'Email unavailable.' => 'メールを利用できません。', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => '注文 “{order}” のメール “{email}” を送信できませんでした。エラー: {error} {file}:{line}', + 'Email “{email}” for order {order} was cancelled.' => '注文「{order}」のメール「{email}」はキャンセルされました。', + 'Email' => 'メール', + 'Emails' => 'メール', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'コストを注文に追加する代わりに、税率が課税対象価格に組み込まれるかどうかを有効にします。', + 'Enable structure for products of this type' => 'このタイプの商品の構造を有効にする', + 'Enable this discount' => 'このディスカウントを有効にする', + 'Enable this rule' => 'このルールを有効にする', + 'Enable this sale' => 'このセールを有効にする', + 'Enable this shipping method on the front end' => 'この配送方法をフロントエンドで有効にする', + 'Enable this shipping rule' => 'この配送ルールを有効にする', + 'Enable this tax rate' => 'この税率を有効にする', + 'Enabled for customers to select during checkout?' => '支払い時に顧客が選択できるようにしますか?', + 'Enabled for customers to select?' => '顧客が選択できるようにしますか?', + 'Enabled' => '有効', + 'Enabled?' => '有効?', + 'End Date' => '終了日', + 'Enter SKU' => 'SKUを入力してください', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'コントロールパネルで使用される、この税率の分かりやすい名前を入力してください。', + 'Enter a percentage like {ex1} or {ex2}.' => '{ex1} や {ex2} などのパーセンテージを入力してください。', + 'Enter coupon code' => 'クーポンコードを入力してください', + 'Enter reference' => '参照を入力してください', + 'Error refunding transaction: {transactionHash}' => '取引の払い戻し中にエラーが発生しました: {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'すべての新規ストアに少なくとも1つのサイトを割り当てる必要があります。', + 'Everywhere' => 'すべての地域', + 'Example' => '実例', + 'Exclude this discount for products that are already on promotion' => 'すでに販売促進が適用された商品はディスカウント対象から除外します', + 'Expired Link' => '期限切れのリンク', + 'Expired' => '期限切れ', + 'Expiry Date' => '有効期限の日付', + 'Expiry date' => '有効期限', + 'Expiry' => '期日', + 'Failed to receive transfer: {error}' => '移動の受け入れに失敗しました: {error}', + 'Failed to send email. Please try again.' => 'メールの送信に失敗しました。もう一度お試しください。', + 'Failed to start' => '開始できませんでした', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => '{num, plural, =1{注文ステータス} other{注文ステータス}}の更新に失敗しました。', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => '{num, plural, =1{注文} other{注文}}の注文ステータスの更新に失敗しました。', + 'Feet (ft)' => 'フィート(ft)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'このルールが適用される注文の抽出条件。条件をスキップする場合は0に設定します。', + 'First Name' => '名', + 'Flat Amount Off Order' => '定額を差し引いた注文', + 'Flat Order Discount Amount Off' => '注文を定額でディスカウントする', + 'Free Order Payment Strategy' => '無料注文の支払いの方法', + 'Free Shipping' => '無料配送', + 'Free orders are processed by the payment gateway' => '無料の注文はペイメントゲートウェイによって処理されます', + 'Free orders complete immediately' => '無料の注文を即時に完了する', + 'Free shipping can only be for whole order or matching items, not both.' => '配送無料は、注文全体あるいは一致するアイテムのどちらか一方にのみ適用されます。', + 'From Name' => '送信者名', + 'Fulfill' => '履行', + 'Fulfilled' => '履行済み', + 'Fulfillment' => 'フルフィルメント', + 'Full Name' => '氏名', + 'Gateway Code' => 'ゲートウェイコード', + 'Gateway Message' => 'ゲートウェイメッセージ', + 'Gateway Reference' => 'ゲートウェイ参照', + 'Gateway Response' => 'ゲートウェイレスポンス', + 'Gateway doesn’t support authorize' => 'ゲートウェイは認証をサポートしていません', + 'Gateway doesn’t support partial refunds.' => 'ゲートウェイは一部払い戻しをサポートしていません。', + 'Gateway doesn’t support purchase' => 'ゲートウェイは購入をサポートしていません', + 'Gateway doesn’t support refunds.' => 'ゲートウェイは払い戻しをサポートしていません。', + 'Gateway saved.' => 'ゲートウェイは保存されました。', + 'Gateway' => 'ゲートウェイ', + 'Gateways reordered.' => 'ゲートウェイを並び替えました。', + 'Gateways' => 'ゲートウェイ', + 'General Settings' => '一般設定', + 'General' => '一般', + 'Generate' => '生成', + 'Generated Coupon Format' => '生成されたクーポンフォーマット', + 'Grams (g)' => 'グラム(g)', + 'Groups for which this sale will be applicable to.' => 'このセールが適用されるグループ。', + 'HTML Email Template Path' => 'HTMLメールのテンプレートのパス', + 'Handle' => 'ハンドル', + 'Harmonized System Code' => '関税分類システムコード', + 'Has Admin Notices' => '管理者通知あり', + 'Has Emails?' => 'メールがある?', + 'Has Free Shipping' => '無料配送あり', + 'Has Orders' => '注文あり', + 'Has Purchasable' => 'パーチャサブルあり', + 'Has Variants?' => 'バリアントがある?', + 'Height ({unit})' => '高さ({unit})', + 'Height' => '高さ', + 'Hide snapshot' => 'スナップショットを隠す', + 'History' => '履歴', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'PDFダウンロードリンクが有効期限切れとなるまでの期間(秒単位)。デフォルトは 86400 秒(24 時間)。', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => '個別のメールアドレスがこのディスカウントを利用できる回数。これは、ゲストまたはユーザーに関係なく、以前のすべての注文に適用されます。ゲストまたはユーザーが無制限に利用するにはゼロに設定します。', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => '1 人のユーザーがこのディスカウントを使用できる回数。これがゼロ以外に設定されている場合、サインインしたユーザーのみがディスカウントを利用できます。', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'このディスカウントをゲストまたはサインインしたユーザーが合計で使用できる回数。無制限に使用するにはゼロを設定します。', + 'How products should be labeled within the control panel.' => 'コントロールパネル内での商品の表示方法。', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'マッチングアイテムを設定するための、パーチャサブルとカテゴリの関連付け方法。[リレーション 専門用語]({link}) をご覧ください。', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'この商品が注文のラインアイテムとしてどのように記述されるかを指定します。 {ex1}や{ex2}などのプロパティを出力するタグを含めることができます', + 'How this shipping method will be referred to in templates and forms.' => 'この配送方法をテンプレートとフォーム上で参照する方法。', + 'How variants should be labeled within the control panel.' => 'コントロールパネル内でのバリアントの表示方法。', + 'How you’ll refer to this PDF in the templates.' => 'テンプレートでこの PDF を参照する方法。', + 'How you’ll refer to this product type in the templates.' => 'この商品タイプをテンプレート上で参照する方法。', + 'How you’ll refer to this shipping category in the templates.' => 'この配送カテゴリをテンプレート上で参照する方法。', + 'How you’ll refer to this status in the templates.' => 'このステータスをテンプレート上で参照する方法。', + 'How you’ll refer to this subscription plan in the templates.' => 'テンプレート上で使う定期支払いプランの名前。', + 'How you’ll refer to this tax category in the templates.' => 'この税カテゴリをテンプレート上で参照する方法。', + 'ID' => 'ID', + 'IP Address' => 'IPアドレス', + 'If disabled, this PDF will not be available or sent with emails.' => '無効にした場合、このPDFは利用不可になり、メールで送信されません。', + 'If disabled, this email will not send.' => '無効な場合、このメールは送信されません。', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => '有効に設定されていて、この税率が注文と一致しない場合、税額はカートの対象価格から削除されます。', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'オーソリのみに設定した場合、資金がアカウントに送金される前に、支払いを手動でキャプチャする必要があります。ゲートウェイは選択したオプションをサポートする必要があります。', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => '「ディスカウントされたアイテム価格の割引」にパーセント率を選択した場合、「アイテムごとの金額」とこれが適用される前のすべてのディスカウントが含まれます。', + 'Ignore Promotions?' => 'プロモーションを無視しますか?', + 'Ignore previous matching sales if this sale matches.' => 'このセールがマッチする場合は、既存のマッチするセールを無視する。', + 'Ignore promotional prices when this discount is applied to matching line items' => 'このディスカウントがマッチングアイテムに適用される場合は販売促進価格を無視する', + 'Inactive Carts' => '非アクティブなカート', + 'Inches (in)' => 'インチ(in)', + 'Include built-in line item tax.' => '組み込まれているラインアイテムの税金を含む。', + 'Include in price?' => '価格に含めますか?', + 'Include line item discounts.' => 'ラインアイテムディスカウントを含む。', + 'Include line item shipping costs.' => 'ラインアイテムの配送料を含む。', + 'Include separate line item tax.' => '個別のラインアイテムの税金を含む。', + 'Included in price?' => '価格に含めますか?', + 'Included' => '込み', + 'Incoming transfer from Transfer ID: ' => '移動IDから入庫予定: ', + 'Incoming' => '入荷', + 'Info' => '情報', + 'Information linked?' => '情報はリンク済み?', + 'Information' => '詳細', + 'Invalid JSON' => 'JSONが無効です', + 'Invalid Order ID' => '無効な注文 ID', + 'Invalid VAT ID.' => 'VAT IDが無効です。', + 'Invalid condition syntax' => '無効な条件構文', + 'Invalid email.' => 'メールアドレスが無効です。', + 'Invalid formula syntax' => '無効な式構文', + 'Invalid gateway: {value}' => '無効なゲートウェイ: {value}', + 'Invalid inventory movements.' => '在庫の移動が無効です。', + 'Invalid order condition syntax.' => '注文条件の構文が無効です。', + 'Invalid payment or order. Please review.' => '無効な支払いまたは注文です。確認してください。', + 'Invalid payment source ID: {value}' => '無効な支払い元 ID: {value}', + 'Invalid store.' => 'ストアが無効です。', + 'Invalid user.' => '無効なユーザーです。', + 'Inventory Item' => '在庫アイテム', + 'Inventory Location' => '在庫場所', + 'Inventory Locations' => '在庫場所', + 'Inventory Tracked' => '追跡済み在庫', + 'Inventory Transfers' => '在庫移動', + 'Inventory could not be set.' => '在庫を設定できませんでした。', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => '在庫場所にコミット済みの在庫があります。最初に注文を履行する必要があります。', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => '在庫場所に入庫予定の在庫があります。最初に移動を完了する必要があります。', + 'Inventory location is already deactivated.' => '在庫場所はすでに無効化されています。', + 'Inventory location saved.' => '在庫場所が保存されました。', + 'Inventory locations not saved.' => '在庫場所は保存されていません。', + 'Inventory movement could not be saved.' => '在庫の移動を保存できませんでした。', + 'Inventory movement saved.' => '在庫の移動が保存されました。', + 'Inventory updated.' => '在庫が更新されました。', + 'Inventory was not updated.' => '在庫が更新されませんでした。', + 'Inventory' => '在庫', + 'Invoice amount' => '請求金額', + 'Invoice date' => '請求日', + 'Is Promotable' => '販売促進可能', + 'Is Promotional Price?' => '販売促進価格ですか?', + 'Is Shippable' => '出荷可能', + 'Is Taxable' => '課税対象', + 'Item Rates' => 'アイテムレート', + 'Item Subtotal' => 'アイテム小計', + 'Item Total' => 'アイテム合計', + 'Item' => 'アイテム', + 'Items' => 'アイテム', + 'Kilograms (kg)' => 'キログラム(kg)', + 'Label' => 'ラベル', + 'Landscape' => '横向き', + 'Language' => '言語', + 'Last Name' => '姓', + 'Last Updated' => '最終更新日', + 'Leave a category rate override blank to use the rate from above.' => 'カテゴリ料金の上書きを空白にすると、上記からの料金を使用します。', + 'Leave blank for unlimited uses.' => '無制限に使用するには空にしてください。', + 'Leave blank if products don’t have URLs' => '商品に URL がない場合は空にしてください。', + 'Leave gateway subscription as-is' => 'ゲートウェイのサブスクリプションを現状のままにします', + 'Length ({unit})' => '長さ({unit})', + 'Length' => '長さ', + 'Let each product choose which sites it should be saved to' => '各商品で保存先のサイトを選択する', + 'Limit which orders this discount applies to based on its line items.' => 'ラインアイテムに基づいてどの注文にこのディスカウントが適用されるかを制限します。', + 'Limit which purchasables this sale applies to.' => 'どのパーチャサブルにこのセールが適用されるかを制限します。', + 'Limit' => 'リミット', + 'Line Item Statuses' => 'ラインアイテムステータス', + 'Line Item' => 'ラインアイテム', + 'Line Items' => 'ラインアイテム', + 'Line item price (minus discounts)' => 'ラインアイテム価格(ディスカウントを差し引いた価格)', + 'Line item shipping cost' => 'ラインアイテムの配送料', + 'Line item statuses reordered.' => 'ラインアイテムステータスを並び替えました。', + 'Link Duration' => 'リンクの有効期限', + 'Link Sent' => 'リンクを送信しました', + 'Link to a product' => '商品にリンク', + 'Link to a variant' => 'バリアントにリンク', + 'Link' => 'リンク', + 'Live' => 'ライブ', + 'Location' => '場所', + 'Locations that should be available for previewing products in this product type.' => 'この商品タイプでプレビュー可能にすべき表示場所。', + 'MM' => 'MM', + 'Make a payment' => '支払いを行う', + 'Make this the primary store' => 'これをプライマリストアにする', + 'Manage Inventory' => '在庫を管理', + 'Manage donation settings' => '寄付設定を管理', + 'Manage general store settings' => '一般ストア設定を管理', + 'Manage inventory locations' => '在庫場所を管理', + 'Manage inventory stock levels' => '在庫レベルを管理', + 'Manage inventory transfers' => '在庫移動を管理', + 'Manage orders' => '注文を管理', + 'Manage payment currencies' => '支払い通貨を管理', + 'Manage promotions' => '販売促進を管理', + 'Manage shipping' => '配送を管理', + 'Manage store settings' => 'ストア設定を管理', + 'Manage subscription plans' => '定期支払いプランを管理', + 'Manage subscription' => '定期支払いを管理する', + 'Manage subscriptions' => '定期支払いを管理', + 'Manage taxes' => '税を管理', + 'Manage' => '管理', + 'Mark as Pending' => '保留中としてマーク', + 'Mark as completed' => '完了としてマーク', + 'Match Billing Address' => '請求先住所に一致', + 'Match Customer' => '顧客の一致', + 'Match Order' => '注文に一致', + 'Match Orders' => '注文に一致', + 'Match Product' => '商品を一致', + 'Match Purchasable' => 'パーチャサブルをマッチ', + 'Match Shipping Address' => '配送先住所に一致', + 'Match Variant' => 'バリアントを一致', + 'Matching Items' => 'マッチングアイテム', + 'Max Qty' => '最大数量', + 'Max Uses' => '最大使用回数', + 'Max Variants' => '最大バリアント', + 'Max quantity must greater than min.' => '最大数量は最小数量よりも大きくする必要があります。', + 'Maximum Purchase Quantity' => '最大購入数量', + 'Maximum Total Shipping Cost' => '最大合計送料', + 'Maximum allowed quantity' => '最大許容数量', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'このディスカウントの適用に可能となる、マッチングアイテムの最大数。ここでゼロの値を指定すると、この条件はスキップされます。', + 'Maximum order quantity for this item is {num}.' => 'このアイテムの最大注文数量は {num} です。', + 'Message' => 'メッセージ', + 'Meters (m)' => 'メートル(m)', + 'Millimeters (mm)' => 'ミリメートル(mm)', + 'Min Qty' => '最小数量', + 'Min quantity must be less than max.' => '最小数量は最大数量よりも小さくする必要があります。', + 'Minimum Purchase Quantity' => '最小購入数量', + 'Minimum Total Price Strategy' => '最低合計価格の算出方法', + 'Minimum Total Shipping Cost' => '最小合計送料', + 'Minimum allowed quantity' => '最小許容数量', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'このディスカウントの適用に必要となる、マッチングアイテムの最小数。', + 'Minimum order quantity for this item is {num}.' => 'このアイテムの最低注文数量は {num} です。', + 'Missing Gateway' => '見つからないゲートウェイ', + 'Missing a default inventory location.' => 'デフォルトの在庫場所がありません。', + 'Move Inventory' => '在庫を移動', + 'Move To' => '移動先', + 'Move {qty} from {fromType} to {toType}' => '{fromType}から{toType}へ{qty}件を移動', + 'Move' => '移動', + 'Movement from deactivated inventory location' => '無効化された在庫場所からの移動', + 'Movement' => '移動', + 'Must have at least one variant.' => '少なくとも 1 つのバリアントが必要です。', + 'Name Field' => '名前フィールド', + 'Name' => '名前', + 'New Customer' => '新規顧客', + 'New Customers' => '新規顧客', + 'New Order' => '新規注文', + 'New PDF' => '新規PDF', + 'New address' => '新規住所', + 'New catalog pricing rule' => '新規カタログ価格ルール', + 'New currency' => '新規通貨', + 'New discount' => '新規ディスカウント', + 'New email' => '新規メール', + 'New gateway' => '新規ゲートウェイ', + 'New line item status' => '新規ラインアイテムステータス', + 'New line items get this status by default when the order is completed' => '注文が完了すると、新しいラインアイテムにはデフォルトでこのステータスが適用されます', + 'New location' => '新しい場所', + 'New order status' => '新規注文ステータス', + 'New orders get this status by default' => '新しい注文はデフォルトでこのステータスが適用されます。', + 'New product type' => '新規商品タイプ', + 'New product' => '新規商品', + 'New product, choose a type' => '新しい商品、タイプを選択してください', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => '新しい商品のデフォルトの税カテゴリになります。利用可能なカテゴリがない場合はこのカテゴリが使用されます。', + 'New sale' => '新規セール', + 'New shipping category' => '新規配送カテゴリ', + 'New shipping method' => '新規配送方法', + 'New shipping rule' => '新規配送ルール', + 'New shipping zone' => '新規配送地域', + 'New subscription plan' => '新規定期支払いプラン', + 'New tax category' => '新規税カテゴリ', + 'New tax rate' => '新規税率', + 'New tax zone' => '新規税対象地域', + 'New transfer' => '新しい移動', + 'New {productType} product' => '新規「{productType}」商品', + 'New' => '新規', + 'Next payment' => '次の支払い', + 'No Address' => '住所がありません', + 'No PDFs exist yet.' => 'PDFがまだありません。', + 'No access given to any specific store management features.' => '特定のストア管理機能へのアクセスがありません。', + 'No additional payment currencies exist yet.' => '追加の支払い通貨がまだありません。', + 'No address' => '住所がありません', + 'No billing address' => '請求先住所がありません', + 'No catalog pricing rule exists with the ID “{id}”' => 'ID「{id}」のカタログ価格ルールは存在しません', + 'No catalog pricing rules exist yet.' => 'カタログ価格ルールはまだ存在しません。', + 'No currency exists with the ID “{id}”' => 'ID「{id}」の通貨は存在しません', + 'No customer email address exists on this cart.' => 'このカートには顧客のメールアドレスは存在しません。', + 'No description' => '説明がありません', + 'No discount exists with the ID “{id}”' => 'ID「{id}」のディスカウントは存在しません', + 'No discounts exist yet.' => 'ディスカウントがまだありません。', + 'No donation amount supplied.' => '寄付の金額が指定されていません。', + 'No emails exist yet.' => 'メールがまだありません。', + 'No inventory changes made.' => '在庫に変更はありません。', + 'No inventory found.' => '在庫が見つかりません。', + 'No inventory movements made.' => '在庫の移動はありません。', + 'No inventory transactions for this location.' => 'この場所の在庫トランザクションはありません。', + 'No new customer selected.' => '新しい顧客が選択されていません。', + 'No order history exists with the ID “{id}”' => 'ID「{id}」の注文履歴は存在しません', + 'No order status history items will exist until the cart becomes an order.' => '注文ステータス履歴はカートが注文に変わった後に有効になります。', + 'No payment source exists with the ID “{id}”' => 'ID「{id}」の支払い元は存在しません', + 'No private Note.' => 'プライベートノートがありません。', + 'No product available.' => '利用できる商品はありません。', + 'No product types exist yet.' => '商品タイプがまだありません。', + 'No purchasable available.' => '利用できるパーチャサブルはありません。', + 'No sale exists with the ID “{id}”' => 'ID「{id}」のセールは存在しません', + 'No sales exist yet.' => 'セールがまだありません。', + 'No shipping address' => '配送先住所がありません', + 'No shipping category exists with the ID “{id}”' => 'ID「{id}」の配送カテゴリは存在しません', + 'No shipping method exists with the ID “{id}”' => 'ID「{id}」の配送方法は存在しません', + 'No shipping rule exists with the ID “{id}”' => 'ID「{id}」の配送ルールは存在しません', + 'No shipping rules exist yet.' => '配送ルールがまだ存在しません。', + 'No shipping zone exists with the ID “{id}”' => 'ID「{id}」の配送地域は存在しません', + 'No stats available.' => '統計情報はありません。', + 'No subscription plan exists with the ID “{id}”' => 'ID「{id}」の定期支払いプランは存在しません', + 'No subscription plans exist yet.' => 'まだ定期支払いプランがありません。', + 'No tax category exists with the ID “{id}”' => 'ID「{id}」の税カテゴリは存在しません', + 'No tax rate exists with the ID “{id}”' => 'ID「{id}」の税率は存在しません', + 'No tax zone exists with the ID “{id}”' => 'ID「{id}」の税対象地域は存在しません', + 'No transactions exist.' => '取引がありません。', + 'No user authenticated.' => '認証済みのユーザーがいません。', + 'No' => 'いいえ', + 'None on hand' => '在庫なし', + 'None' => 'なし', + 'Not a valid address type' => '有効な住所タイプではありません', + 'Not a valid credit card number.' => '有効なクレジットカード番号ではありません。', + 'Not all SKUs are unique.' => 'すべての SKU が一意とは限りません。', + 'Note' => 'ノート', + 'Notes' => 'ノート', + 'Number of Coupons' => 'クーポン数', + 'Number' => '番号', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => '上記の有効なサイトのうち、この商品タイプの商品をどのサイトに保存しますか?', + 'On Hand' => '手持ち', + 'Only allow this gateway to be used for zero value orders?' => 'このゲートウェイを注文金額がゼロの場合にのみ使用できるようにしますか?', + 'Only match certain purchasables…' => '特定のパーチャサブルのみにマッチ…', + 'Only match purchasables related to…' => '次に関連するパーチャサブルのみにマッチ…', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => '次の注文ステータスの注文のみが含まれます。すべてのステータスを含めるには空白のままにします。', + 'Only save product to the site they were created in' => '作成したサイトにのみ商品を保存する', + 'Options' => 'オプション', + 'Order Condition Formula' => '注文の条件式', + 'Order Description Format' => '注文の表示フォーマット', + 'Order Details' => '注文の詳細', + 'Order Fields' => '注文フィールド', + 'Order PDF Download Link' => '注文PDFダウンロードリンク', + 'Order PDF Filename Format' => '注文PDFのファイル名フォーマット', + 'Order Reference Number Format' => '注文参照番号フォーマット', + 'Order Settings' => '注文設定', + 'Order Site' => '注文サイト', + 'Order Status description.' => '注文ステータスの説明。', + 'Order Status' => '注文ステータス', + 'Order Statuses' => '注文ステータス', + 'Order can not be empty.' => '注文を空にできません。', + 'Order count' => '注文数', + 'Order customer data removed.' => '注文の顧客データを削除しました。', + 'Order deleted.' => '注文は削除されました。', + 'Order fields saved.' => '注文フィールドは保存されました。', + 'Order not found.' => '注文が見つかりません。', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => '注文支払残高は {outstandingBalanceAsCurrency} です。これが最大請求額になります。', + 'Order recalculated.' => '注文が再計算されました。', + 'Order status saved.' => '注文ステータスは保存されました。', + 'Order statuses reordered.' => '注文ステータスを並び替えました。', + 'Order total shipping cost' => '注文合計の配送料', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => '注文合計の課税価格(ラインアイテム小計 + 合計ディスカウント + 合計配送料)', + 'Order' => '注文', + 'Orders (Legacy)' => '注文(レガシー)', + 'Orders deleted.' => '注文は削除されました。', + 'Orders not restored.' => '注文は復元されていません。', + 'Orders restored.' => '注文は復元されました。', + 'Orders' => '注文', + 'Organization Name' => '組織名', + 'Organization Tax ID' => '組織税 ID', + 'Origin and destination cannot be the same.' => '起点と宛先は同じにはできません。', + 'Origin' => '原因', + 'Original Price' => '元の価格', + 'Original price' => '元の価格', + 'Original promotional price' => '元の販売促進価格', + 'Other Languages' => 'その他の言語', + 'Other countries' => 'その他の国', + 'Outgoing transfer from Transfer ID: ' => '移動IDから出庫予定: ', + 'Overpaid' => '過払い', + 'Overrides previous?' => '既存を上書きする?', + 'PDF Attachment' => 'PDF添付', + 'PDF Template Path' => 'PDFテンプレートのパス', + 'PDF saved.' => 'PDF は保存されました。', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'PDFとメール', + 'PDFs' => 'PDF', + 'Paid Amount' => '支払い総額', + 'Paid Status' => '支払いステータス', + 'Paid' => '決済完了', + 'Paper Orientation' => '用紙の向き', + 'Paper Size' => '用紙サイズ', + 'Partial payment not allowed.' => '一部支払はできません。', + 'Partial' => '一部', + 'Past year' => '去年', + 'Past {num} days' => '過去 {num} 日間', + 'Pay {amount} of {currency} on the order.' => '注文金額 {amount} {currency} を支払う。', + 'Pay' => '支払う', + 'Payment Amount' => '支払い金額', + 'Payment Currencies' => '支払い通貨', + 'Payment Gateway' => 'ペイメントゲートウェイ', + 'Payment Method' => '支払い方法', + 'Payment error: {message}' => '支払いエラー: {message}', + 'Payment method issue' => '支払い方法の問題', + 'Payment source created.' => '支払い元が作成されました。', + 'Payment source deleted.' => '支払い元は削除されました。', + 'Payments' => '支払い', + 'Pending' => '保留中', + 'Per Email Address Discount Limit' => 'メールアドレスごとのディスカウント限度', + 'Per Item Amount Off' => 'アイテムごとの料金割引', + 'Per Item Discount' => 'アイテムごとのディスカウント', + 'Per Item Percentage Off' => 'アイテムごとのパーセント率割引', + 'Per Item Rate' => 'アイテムごとの料金', + 'Per User Discount Limit' => 'ユーザーごとのディスカウント限度', + 'Percentage Rate' => 'パーセンテージ料金', + 'Phone (Alt)' => '電話 (予備)', + 'Phone' => '電話', + 'Pick a plan' => 'プランを選択', + 'Plain Text Email Template Path' => 'プレーンテキストメールのテンプレートのパス', + 'Plan' => 'プラン', + 'Plans reordered.' => 'プランを並び替えました。', + 'Portrait' => '縦向き', + 'Post Date' => '投稿日', + 'Postal Code Formula' => '郵便番号の式', + 'Pounds (lb)' => 'ポンド(lb)', + 'Preview' => 'プレビュー', + 'Previous Status' => '変更前のステータス', + 'Price' => '価格', + 'Prices' => '価格', + 'Pricing Rules' => '価格ルール', + 'Pricing jobs are currently running.' => '価格設定ジョブは現在実行中です。', + 'Pricing' => '価格設定', + 'Primary Billing Address' => '既定の請求先住所', + 'Primary Shipping Address' => '既定の配送先住所', + 'Primary payment source updated.' => '主な支払い元が更新されました。', + 'Primary' => 'プライマリ', + 'Private Note' => 'プライベートノート', + 'Product Fields' => '商品フィールド', + 'Product ID is required.' => '商品 ID が必要です。', + 'Product Template' => '商品のテンプレート', + 'Product Title Format' => '商品タイトルフォーマット', + 'Product Type' => '商品タイプ', + 'Product Types' => '商品タイプ', + 'Product URI Format' => '商品の URI フォーマット', + 'Product Variant' => '商品バリアント', + 'Product Variants' => '商品バリアント', + 'Product type saved.' => '商品タイプは保存されました。', + 'Product type settings' => '商品タイプ設定', + 'Product' => '商品', + 'Products and Variants deleted.' => '商品とバリアントは削除されました。', + 'Products not restored.' => '商品は復元されていません。', + 'Products restored.' => '商品は復元されました。', + 'Products' => '商品', + 'Promotable' => '販売促進可能', + 'Promotable?' => '販売促進可能?', + 'Promotional Amount' => '販売促進価格', + 'Promotional Price' => '販売促進価格', + 'Purchasable Categories' => 'パーチャサブルカテゴリ', + 'Purchasable ID and Sale ID are required.' => 'パーチャサブル ID とセール ID が必要です。', + 'Purchasable ID is required.' => 'パーチャサブル ID が必要です。', + 'Purchasable Type' => 'パーチャサブルタイプ', + 'Purchasable' => 'パーチャサブル', + 'Purchase (Authorize and Capture Immediately)' => '購入(即時承認とキャプチャ)', + 'Purchase Total' => '合計購入額', + 'Qty' => '数量', + 'Quality Control' => '品質コントロール', + 'Quantity' => '数量', + 'Rate' => '率', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => '{numOrders, plural, =1{注文} other{注文}}を再割り当て', + 'Recalculate order' => '注文を再計算する', + 'Receive Inventory' => '在庫を受け入れ', + 'Receive Transfer' => '移動を受け入れ', + 'Receive' => '受け入れ', + 'Received' => '受け入れ済み', + 'Recent Orders' => '最近の注文', + 'Recipient' => '宛先', + 'Recover Cart' => 'カートを復元', + 'Reduce price' => '価格を下げる', + 'Reduce the price by a fixed amount' => '固定金額で価格を下げる', + 'Reduce the price by a percentage of the original price' => '元の価格のパーセンテージで値引く', + 'Reference' => '参照', + 'Refresh payment history' => '支払い履歴を更新する', + 'Refund note' => '払い戻しメモ', + 'Refund payment' => '払戻し', + 'Refund' => '返金', + 'Reject' => '拒否', + 'Rejected' => '拒否済み', + 'Relationship Type' => '関係付けタイプ', + 'Removable included tax rates are only allowed for the default tax zone.' => '削除可能な税込料金は、デフォルトの税対象地域にのみ使用できます。', + 'Remove address' => '注所を削除', + 'Remove all shipping costs from the order' => '注文のすべての送料を値引きする', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => '{numOrders, plural, =1{注文} other{注文}}から顧客の関連付けとメールアドレスを削除してください。以下から削除する追加の顧客データを任意で選択してください', + 'Remove customer data' => '顧客データを削除', + 'Remove from price?' => '価格から削除しますか?', + 'Remove shipping costs for matching items only' => 'マッチングアイテムの送料のみを値引きする', + 'Remove the included tax when a valid organization tax ID is present?' => '有効な組織税 ID が存在する場合、含まれている税金を削除しますか?', + 'Remove' => '削除', + 'Removed' => '削除済み', + 'Repeat Customers' => 'リピート顧客', + 'Reply To' => '返信先', + 'Require Billing Address At Checkout' => 'チェックアウトでは請求先住所が必要です', + 'Require Coupon Code' => 'クーポンコードが必要です', + 'Require Shipping Address At Checkout' => 'チェックアウトでは配送先住所が必要です', + 'Require Shipping Method Selection At Checkout' => 'チェックアウトでは配送方法の選択が必要です', + 'Require' => '必須', + 'Reserved' => '予約済み', + 'Reset usage' => '利用状況をリセットする', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'マッチングアイテムの合計購入額が最低額に達した注文のみにディスカウントを制限します。', + 'Revenue Options' => '収益オプション', + 'Revenue' => '収入', + 'Rule' => 'ルール', + 'Rules reordered.' => 'ルールを並び替えました。', + 'SKU' => 'SKU', + 'Safety' => '安全性', + 'Sale Price' => 'セール価格', + 'Sale description.' => 'セールの説明。', + 'Sale reordered.' => 'セールを並び替えました。', + 'Sale saved.' => 'セールが保存されました。', + 'Sale' => 'セール', + 'Sales deleted.' => 'セールを削除しました。', + 'Sales updated.' => 'セールは更新されました。', + 'Sales' => 'セール', + 'Save and continue editing' => '保存して編集を続く', + 'Save and return to all orders' => '保存してすべての注文に戻る', + 'Save and set rules' => '保存してルールを設定する', + 'Save as a new rule' => '新しいルールとして保存', + 'Save product to all sites enabled for this product type' => 'この商品タイプで有効なすべてのサイトに商品を保存する', + 'Save product to other sites in the same site group' => '同じサイトグループ内の他のサイトに商品を保存する', + 'Save product to other sites with the same language' => '同じ言語のサイトに商品を保存する', + 'Save' => '保存', + 'Search customer…' => '顧客を検索...', + 'Search inventory' => '在庫検索', + 'Search or enter customer email…' => '顧客のメールを検索、または入力してください...', + 'Search…' => '検索…', + 'See Orders' => '注文を表示', + 'Select a gateway' => 'ゲートウェイを選択してください', + 'Select a tax category.' => '税カテゴリを選択してください。', + 'Select a tax zone. If empty, this rate will match anywhere.' => '税対象地域を選択してください。空の場合、この税率はすべての地域に適用されます。', + 'Select address' => '住所を選択する', + 'Select an item' => 'アイテムを選択', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'パーチャサブルにカタログ価格ルールを適用する方法を選択します。', + 'Select how the sale will be applied to the purchasable(s).' => 'パーチャサブルにセールを適用する方法を選択します。', + 'Select product type' => '商品タイプを選択', + 'Select the emails that will be sent when transitioning to this status.' => 'このステータスに変化する時に送信されるメールを選択してください。', + 'Select what this rate should be applied to.' => 'この税率が適用されるべきものを選択してください。', + 'Send Email' => 'メールを送信する', + 'Send to custom recipient' => '任意の宛先に送信する', + 'Send to the customer' => '顧客に送信する', + 'Set Quantity' => '数量を設定', + 'Set default category' => 'デフォルトのカテゴリを設定', + 'Set default variant' => 'デフォルトバリアントを設定', + 'Set or Adjust' => '設定または調整', + 'Set price' => '価格を設定', + 'Set status' => 'ステータスの設定', + 'Set the price to a flat amount' => '定額に価格を設定する', + 'Set the price to a percentage of the original price' => '元の価格に対するパーセンテージで価格を設定する', + 'Set the sale price to a flat amount' => 'セール価格を定額に設定する', + 'Set the sale price to a percentage of the original price' => '元の価格に対するパーセンテージで価格を設定する', + 'Set to' => '設定する', + 'Settings saved.' => '設定が保存されました。', + 'Settings' => '設定', + 'Share cart…' => 'カートを共有…', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => '配送 - 注文価格が配送料を下回る場合、最低料金は配送料金です。', + 'Shipping Address Zone' => '配送先住所地域', + 'Shipping Address' => '配送先住所', + 'Shipping Business Name' => '配送先会社名', + 'Shipping Categories' => '配送カテゴリ', + 'Shipping Category Conditions' => '配送カテゴリの条件', + 'Shipping Category' => '配送カテゴリ', + 'Shipping First Name' => '配送先の名', + 'Shipping Full Name' => '配送先氏名', + 'Shipping Last Name' => '配送先の姓', + 'Shipping Method' => '配送方法', + 'Shipping Methods' => '配送方法', + 'Shipping Rule' => '配送ルール', + 'Shipping Zones' => '配送地域', + 'Shipping address required.' => '配送先住所が必要です。', + 'Shipping categories deleted.' => '配送カテゴリが削除されました。', + 'Shipping category saved.' => '配送カテゴリは保存されました。', + 'Shipping category updated.' => '配送カテゴリが更新されました。', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'パーセンテージ料金、アイテムごとの料金、および重量ごとの料金の適用前に、注文全体に追加される送料。この料金を無効にするには、0に設定します。この基本料金を含むルール全体は、カートにデジタル商品などの出荷不可アイテムのみが含まれる場合は一致せず、適用されません。', + 'Shipping method saved.' => '配送方法は保存されました。', + 'Shipping methods and rules deleted.' => '配送方法とルールが削除されました。', + 'Shipping methods updated.' => '配送方法が更新されました。', + 'Shipping rule saved.' => '配送ルールは保存されました。', + 'Shipping zone saved.' => '配送地域は保存されました。', + 'Shipping' => '配送', + 'Short Number' => '短縮番号', + 'Show Chart?' => 'チャートを表示?', + 'Show Order Count?' => '注文数を表示?', + 'Show all prices' => 'すべての価格を表示', + 'Show archived gateways' => 'アーカイブされたゲートウェイを表示', + 'Show order count line on chart.' => 'チャートに注文数の線を表示します。', + 'Show related sales' => '関連するセールを表示', + 'Show rule details' => 'ルールの詳細を表示', + 'Show the Dimensions and Weight fields for products of this type' => 'このタイプの商品に寸法と重量のフィールドを表示する', + 'Show the Title field for products' => '商品のタイトルフィールドを表示する', + 'Show the Title field for variants' => 'バリアントのタイトルフィールドを表示する', + 'Signed In' => 'サインイン済み', + 'Site Languages' => 'サイト言語', + 'Site store mapping saved.' => 'サイトストアマッピングが保存されました。', + 'Sites' => 'サイト', + 'Slug' => 'スラッグ', + 'Snapshot' => 'スナップショット', + 'Snapshots' => 'スナップショット', + 'Some orders restored.' => '一部の注文は復元されました。', + 'Some products restored.' => '一部の商品は復元されました。', + 'Some variants restored.' => 'バリアントの一部が復元されました。', + 'Something changed with the order before payment, please review your order and submit payment again.' => '支払い前に注文が変更されました。注文内容を確認してからもう一度支払いを行ってください。', + 'Sorry, no matching options.' => '申し訳ありません。一致するオプションはありません。', + 'Source - The purchasable relationship field is on the category' => 'ソース - パーチャサブルの関連フィールドはカテゴリにあります', + 'Source' => 'ソース', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'ディスカウントが特定の注文に適用される必要があるかどうかを判断する Twig 条件を指定します。(注文は `order` 変数で参照できます。)', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => '配送ルールが特定の注文に適用される必要があるかどうかを判断する Twig 条件を指定します。(注文は `order` 変数で参照できます。)', + 'Start Date' => '開始日', + 'State' => '州/都道府県', + 'Status Email Address' => 'ステータスメールアドレス', + 'Status Emails' => 'ステータスメール', + 'Status History' => 'ステータス履歴', + 'Status Updated.' => 'ステータスが更新されました。', + 'Status change message' => 'ステータス更新メッセージ', + 'Status' => 'ステータス', + 'Stock' => '在庫', + 'Stops Processing?' => '追加の設定を無効にする?', + 'Stops subsequent?' => '追加の設定を無効にする?', + 'Store Location' => 'ストアのロケーション', + 'Store Management' => 'ストア管理', + 'Store Markets' => 'ストア市場', + 'Store Rule' => 'ストアルール', + 'Store saved.' => 'ストアが保存されました。', + 'Store' => 'ストア', + 'Stores & Sites' => 'ストアとサイト', + 'Stores' => 'ストア', + 'Strategy to apply when an order is free or has a zero balance.' => '注文が無料、または合計金額がゼロの場合の支払い方法', + 'Strategy to apply when calculating the minimum order price.' => '最低の注文価格を算出する方法', + 'Subject' => '件名', + 'Subscribing user' => '定期支払い中のユーザー', + 'Subscription Fields' => '定期支払いフィールド', + 'Subscription Plans' => '定期支払いプラン', + 'Subscription Settings' => '定期支払い設定', + 'Subscription cancelled.' => '定期支払いをキャンセルしました。', + 'Subscription date' => '定期支払い作成日', + 'Subscription fields saved.' => '定期支払いフィールドは保存されました。', + 'Subscription for {user} to {plan} prevented by a plugin.' => '{user} の {plan} への定期支払いは、プラグインによって阻止されました。', + 'Subscription plan saved.' => '定期支払いプランは保存されました。', + 'Subscription plan' => '定期支払いプラン', + 'Subscription plans' => '定期支払いプラン', + 'Subscription reactivated.' => '定期支払いを再度有効にしました。', + 'Subscription reference' => '定期支払い参照番号', + 'Subscription started.' => '定期支払いを開始しました。', + 'Subscription switched.' => '定期支払いを切り替えました。', + 'Subscription to “{plan}”' => '「{plan}」の定期支払い', + 'Subscription' => '定期支払い', + 'Subscriptions on hold' => '保留中の定期支払い', + 'Subscriptions' => '定期支払い', + 'Suppress emails' => 'メールを表示しない', + 'Switch plan' => 'プランの切り替え', + 'Switch' => '切り替える', + 'System' => 'システム', + 'Table Columns' => 'テーブル列', + 'Target - The category relationship field is on the purchasable' => 'ターゲット - カテゴリ関連フィールドはパーチャサブルにあります', + 'Tax & Shipping' => '税と配送', + 'Tax (inc)' => '税(込み)', + 'Tax Categories' => '税カテゴリ', + 'Tax Category' => '税カテゴリ', + 'Tax Rates' => '税率', + 'Tax Zone' => '税対象地域', + 'Tax Zones' => '税対象地域', + 'Tax categories deleted.' => '税カテゴリが削除されました。', + 'Tax category saved.' => '税カテゴリは保存されました。', + 'Tax category updated.' => '税カテゴリが更新されました。', + 'Tax rate saved.' => '税率は保存されました。', + 'Tax rates updated.' => '税率が更新されました。', + 'Tax zone saved.' => '税対象地域は保存されました。', + 'Tax' => '税', + 'Taxable Subject' => '課税対象', + 'Template Path' => 'テンプレートのパス', + 'That handle is already in use' => 'このハンドルはすでに使用されています', + 'That handle is already in use.' => 'このハンドルはすでに使用されています。', + 'The PDF to attach to this email.' => 'このメールに添付するPDF。', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => '定期支払いの請求先情報を更新、および 3DS 認証を処理するページへの URL です。', + 'The address provided is outside the store’s market.' => '提供された住所はストア市場外です。', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => '注文全体に適用される割引額。この金額は、割引を使い果たすまで、最高価格から最低価格の順にラインアイテム間で適用されます。', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => '基本ディスカウントはカート内の商品の価格がゼロになるか、割引を使い果たすまで適用することができます。注文の金額をマイナスにすることはできません。', + 'The cart recovery link is invalid. Please request a new one.' => 'カート復元リンクが無効です。新しいリンクをリクエストしてください。', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => '金額をこの通貨に換算するときに使用される換算レート。例えば、アイテムの価格が{amount1}の場合、換算レートが{rate}であれば代替通貨では{amount2}になります。', + 'The countries that orders are allowed to be placed from.' => '注文が許可されていない国々', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'クーポン「{code}」は利用回数上限({limit})を超えています。', + 'The customer for this order has been deleted.' => 'この注文の顧客情報は削除されました。', + 'The default shipping category is automatically available to all product types.' => 'デフォルトの配送カテゴリは、すべての商品タイプで自動的に利用可能です。', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'ディスカウント「{name}」は累計利用回数上限({limit})を超えています。', + 'The download link has expired. Please request a new one.' => 'ダウンロードリンクの有効期限が切れました。新しいリンクをリクエストしてください。', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => '注文ステータスメールの送信元のメールアドレス。Craftの一般設定で定義されたシステムメールアドレスを使用するには、空白のままにします。', + 'The entry that contains the description for this subscription’s plan.' => 'この定期支払いプランの説明を記載しているエントリ。', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => '各アイテムを一律にディスカウントする値です。各アイテムから $3 割引であれば「3」とします。', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => '{example}など、新しいクーポンの生成で使用されるフォーマット。すべての「#」番号記号はランダムな文字に置き換えられます。', + 'The from and to inventory locations must be different.' => '在庫元と在庫先は異なる必要があります。', + 'The inventory locations this store uses.' => 'このストアが使用する在庫場所。', + 'The item is not enabled for sale.' => 'アイテムのセールは有効化されていません。', + 'The language the order was made in.' => '注文が行われた言語。', + 'The language to be used when this email is rendered.' => 'このメールをレンダリングする際に使用する言語。', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'この商品タイプが持つことのできる最大レベル数。いくつでも構わない場合は空白のままにしておいてください。', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => '顧客が支払う送料の最大額。無効にするにはゼロに設定します', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => '顧客が支払う送料の最小額。無効にするにはゼロに設定します', + 'The order is not valid.' => '注文は有効ではありません。', + 'The payment gateway that will be used for the subscription plan.' => '定期支払いプランに使用されるペイメントゲートウェイ。', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => '各アイテムからディスカウントされるパーセンタイル値で、{ex2} 割引の場合は{ex1}とします。パーセント率は小数点 2 桁に丸められます。', + 'The previously-selected shipping method is no longer available.' => '以前に選択した配送方法はご利用いただけません。', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => '{description}の価格が {originalSalePriceAsCurrency} から {newSalePriceAsCurrency} に上がりました', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => '{description}の金額が {originalSalePriceAsCurrency} から {newSalePriceAsCurrency} に下がりました', + 'The primary currency cannot be changed after orders are placed.' => '注文後に基本通貨を変更できません。', + 'The purchasable defines the relationship' => 'パーチャサブルは関係付けを定義します', + 'The purchasable is related by another element' => 'パーチャサブルが別のエレメントに関連しています', + 'The recipient of the email. Twig code can be used here.' => 'メールの受信者。ここに Twig コードを使用できます。', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => '返信先メールアドレス。通常のメール送信者への返信の場合は空白のままにします。ここに Twig コードを使用できます。', + 'The site the order was made in.' => '注文が行われたサイト。', + 'The site to be used when this email is rendered.' => 'このメールをレンダリングする際に使用するサイト。', + 'The subject line of the email. Twig code can be used here.' => 'メールの件名。ここに Twig コードを使用できます。', + 'The template that the PDF should be generated from.' => 'PDF を生成するテンプレート。', + 'The template to be used for HTML emails.' => 'HTML メールに使用されるテンプレート。', + 'The template to be used for plain text emails. Twig code can be used here.' => 'プレーンテキスト形式のメールに使用されるテンプレート。ここに Twig コードを使用できます。', + 'The template to use when a product’s URL is requested.' => '商品の URL が要求された場合に使用するテンプレート。', + 'The total number of order adjustments changed.' => '注文合計数のアジャストメントが変更されました。', + 'The total price of the order changed.' => '注文の合計金額が変更されました。', + 'The total quantity of items within the order changed.' => '注文内のアイテムの合計数量が変更されました。', + 'The unique SKU of the donation purchasable.' => '購入可能な寄付の一意のSKU。', + 'The unit of measurement that should be used when specifying product dimensions.' => '商品の寸法を示すために使用する単位。', + 'The unit of measurement that should be used when specifying product weights.' => '商品の重量を示すために使用する単位。', + 'The webhook URL for this gateway.' => 'このゲートウェイの webhook の URL。', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => '注文ステータスのメールを送信するときに使用される「差出人」の名前。 Craftの一般設定で定義された送信者名を使用するには、空白のままにします。', + 'There are errors on the order' => '注文にエラーがあります', + 'There are only {num} “{description}” items left in stock.' => '在庫には {num} 個の「{description}」アイテムしか残っていません。', + 'There aren’t any product types to select yet.' => '選択する商品タイプがまだありません。', + 'There is no gateway or payment source available for use with this order.' => 'この注文に利用できるゲートウェイまたは支払い元がありません。', + 'There is no gateway selected that supports payment sources.' => '支払い元をサポートするゲートウェイが選択されていません。', + 'There is no shipping method selected for this order.' => 'この注文に選択された配送方法はありません。', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'この URL はカートをユーザーセッションにロードし、カートを有効にします。', + 'This action is not allowed for the current user.' => 'これは現在のユーザーに許可されていないアクションです。', + 'This category will be used as the default for all purchasables in this store.' => 'このカテゴリは、このストア内のすべてのパーチャサブルのデフォルトとして使用されます。', + 'This coupon is for registered users and limited to {limit} uses.' => 'このクーポンは登録済みユーザーを対象としており、使用回数は {limit} 回に制限されています。', + 'This coupon is limited to {limit} uses.' => 'このクーポンの使用は {limit} 回に制限されています。', + 'This coupon requires an email address.' => 'このクーポンにはメールアドレスが必要です。', + 'This gateway does not support that functionality.' => 'このゲートウェイはその機能をサポートしていません。', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'これは、`config/{file}.php` の {setting} 構成設定によって上書きされています。', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'これはあなたのストアの場所を示す住所です。配送料や税金などを決定するために、さまざまなプラグインによって使用される場合があります。PDF領収書でも使用できます。', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'これは、注文 PDF を要求する際に表示されるデフォルトの PDF です。', + 'This is the last location for the {store} store.' => 'これは{store}ストアの最後の場所です。', + 'This month' => '今月', + 'This order has unsaved changes.' => 'この注文には保存されていない変更があります。', + 'This week' => '今週', + 'This year' => '今年', + 'Times Used' => '利用された回数', + 'Title' => 'タイトル', + 'To' => '宛先', + 'Today' => '今日', + 'Too many variants for this product.' => 'この商品のバリアントが多すぎます。', + 'Top Customers by Average Order' => '平均注文別上位顧客', + 'Top Customers by Total Revenue' => '合計収益別上位顧客', + 'Top Customers' => '上位顧客', + 'Top Product Types by Qty Sold' => '販売数量別上位商品タイプ', + 'Top Product Types by Revenue' => '収益別上位商品タイプ', + 'Top Product Types' => '上位商品タイプ', + 'Top Products by Qty Sold' => '販売数量別上位商品', + 'Top Products by Revenue' => '収益別上位商品', + 'Top Products' => '上位商品', + 'Top Purchasables by Qty Sold' => '販売数量別上位パーチャサブル', + 'Top Purchasables by Revenue' => '収益別上位パーチャサブル', + 'Top Purchasables' => '上位パーチャサブル', + 'Total ' => '合計 ', + 'Total Discount Use Limit' => 'ディスカウントの合計使用制限数', + 'Total Discount' => '合計ディスカウント', + 'Total Included Tax' => '税込合計', + 'Total Orders by Billing Country' => '請求先国別合計注文数', + 'Total Orders by Country' => '国別合計注文数', + 'Total Orders by Shipping Country' => '配送先国別合計注文数', + 'Total Orders' => '合計注文数', + 'Total Paid' => '支払い済み合計', + 'Total Price' => '合計金額', + 'Total Qty' => '合計数量', + 'Total Revenue' => '合計収益', + 'Total Shipping' => '合計配送料', + 'Total Tax' => '税額合計', + 'Total Weight' => '合計重量', + 'Total' => '合計', + 'Track Inventory' => '在庫を追跡', + 'Transaction Hash' => '取引ハッシュ', + 'Transaction ID' => '取引 ID', + 'Transaction captured successfully: {message}' => '取引は正しくキャプチャされました: {message}', + 'Transaction refunded successfully: {message}' => '取引は正しく払い戻されました: {message}', + 'Transactions' => '取引', + 'Transfer Fields' => '転送項目', + 'Transfer Items' => '移動アイテム', + 'Transfer Settings' => '移動設定', + 'Transfer Status' => '移動ステータス', + 'Transfer fields saved.' => '移動フィールドは保存されました。', + 'Transfer must have at least one item.' => '移動には少なくとも1つのアイテムが必要です。', + 'Transfer' => '移動', + 'Transfers' => '移動', + 'Trial days credited' => '付与されたトライアル期間', + 'Trial expiration' => 'トライアル期限', + 'Trial expiry date' => 'トライアルの有効期限', + 'Type not in allowed options.' => 'タイプは許可されるオプションにありません。', + 'Type' => 'タイプ', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => '現在、定期支払いをキャンセルできません。', + 'Unable to complete order: another request is already in progress.' => '注文を完了できません:別のリクエストが既に進行中です。', + 'Unable to find variant.' => 'バリアントが見つかりません。', + 'Unable to generate coupon codes: {message}' => 'クーポンコードを生成できません: {message}', + 'Unable to make payment at this time.' => '現在のところ、お支払いできません。', + 'Unable to modify subscription at this time.' => '現在、定期支払いを変更できません。', + 'Unable to reactivate subscription at this time.' => '現在、定期支払いを再開できません。', + 'Unable to reassign orders.' => '注文を再割り当てできません。', + 'Unable to remove order data.' => '注文データを削除できません。', + 'Unable to retrieve Sale and Purchasable.' => 'セールとパーチャサブルを取得できません。', + 'Unable to retrieve cart.' => 'カートを取得できません。', + 'Unable to retrieve customer.' => '顧客を取得できません。', + 'Unable to retrieve load cart URL' => 'ロードするカートの URL を取得できません', + 'Unable to retrieve payment source.' => '支払い元を取得できません。', + 'Unable to set default shipping category.' => 'デフォルトの配送カテゴリを設定できません。', + 'Unable to set default tax category.' => 'デフォルトの税カテゴリを設定できません。', + 'Unable to set primary payment source.' => '主な支払い元を設定できません。', + 'Unable to start the subscription. Please check your payment details.' => '定期支払いを開始できません。支払いの詳細を確認してください。', + 'Unable to subscribe at this time.' => '現在、定期支払いを設定できません。', + 'Unable to update cart.' => 'カートを更新できません。', + 'Unable to validate address.' => '住所を確認できません。', + 'Unit Price' => '単価', + 'Unit price (minus discounts)' => '単価(ディスカウントを差し引いた価格)', + 'Units' => '単位', + 'Unpaid' => '未決済', + 'Unsubscribe' => '定期支払い解除', + 'Update Address' => '住所を更新する', + 'Update Order Status' => '注文ステータスを更新する', + 'Update Order Status…' => '注文ステータスを更新…', + 'Update order' => '注文を更新する', + 'Update subscription' => '定期支払いを更新', + 'Update' => '更新', + 'Updated By' => '更新者', + 'Updated committed stock successfully.' => 'コミット済み在庫を正常に更新しました。', + 'Updated' => '更新済み', + 'Use Billing Address For Tax' => '税請求先住所を使用する', + 'Use as the primary billing address' => 'プライマリ請求先住所として使用', + 'Use as the primary shipping address' => 'プライマリ配送先住所として使用', + 'Used By Tax Rates' => '税率に使用されている', + 'Used by Tax Rates' => '税率に使用されている', + 'User Groups' => 'ユーザーグループ', + 'User not found.' => 'ユーザーが見つかりません。', + 'User' => 'ユーザー', + 'Uses' => '使用回数', + 'Validate Business Tax ID as Vat ID' => '事業税IDをVAT IDとして検証する', + 'Validating condition syntax' => '条件構文を検証中', + 'Validating formula syntax' => '式構文を検証中', + 'Variant Fields' => 'バリアントフィールド', + 'Variant Has Untracked Stock' => 'バリアントに追跡されていない在庫があります', + 'Variant Price' => 'バリアントの価格', + 'Variant SKU' => 'バリアントのSKU', + 'Variant Search' => 'バリアントの検索', + 'Variant Stock' => 'バリアントの在庫', + 'Variant Title Format' => 'バリアントのタイトルフォーマット', + 'Variant Tracks Stock' => 'バリアントは在庫を追跡します', + 'Variant UI Label Format' => 'バリアントUIラベルの表示形式', + 'Variant has no product.' => 'バリアントに商品がありません。', + 'Variants not restored.' => 'バリアントは復元されていません。', + 'Variants restored.' => 'バリアントが復元されました。', + 'Variants' => 'バリアント', + 'View customer' => '顧客を表示', + 'View order' => '注文を表示', + 'View product type - {productType}' => '商品タイプを表示 - {productType}', + 'View user' => 'ユーザーを表示', + 'View' => '表示', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => '警告。この通貨を削除すると、この通貨でのすべての支払いと返金が停止されます。「{name}」を削除してもよろしいですか?', + 'Web' => 'ウェブ', + 'Webhook URL' => 'Webhook URL', + 'Weight ({unit})' => '重量({unit})', + 'Weight Rate' => '重量ごとの料金', + 'Weight Unit' => '重量の単位', + 'Weight' => '重量', + 'What product URIs should look like for the site.' => 'サイト向けの商品 URI の形式', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => '自動生成されたバリアントタイトルの表示方法。{ex1} や {ex2} など、商品プロパティを出力するタグを含めることができます。使用されるすべてのカスタムフィールドは required に設定する必要があります。', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => '自動生成されたバリアントタイトルの表示方法。{ex1} や {ex2} など、バリアントプロパティを出力するタグを含めることができます。使用されるすべてのカスタムフィールドは required に設定する必要があります。', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => '注文 PDF ファイル名の表示方法(拡張子無し)。{ex1} または {ex2} など、注文プロパティを出力するタグを含めることができます。', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'SKU フィールドに値が指定されずに送信された場合に自動生成される一意の SKU の表示方法。{ex1} や {ex2} といった、プロパティを出力するタグを含めることができます。', + 'What this PDF will be called in the control panel.' => 'コントロールパネルに表示するこの PDF の名前。', + 'What this catalog pricing rule will be called in the control panel.' => 'コントロールパネルに表示するこのカタログ価格ルールの名前。', + 'What this discount will be called in the control panel.' => 'コントロールパネルに表示するこのディスカウントの名前。', + 'What this email will be called in the control panel.' => 'コントロールパネルに表示するこのメールの名前。', + 'What this product type will be called in the control panel.' => 'コントロールパネルに表示するこの商品タイプの名前。', + 'What this sale will be called in the control panel.' => 'コントロールパネルに表示するこのセールの名前。', + 'What this shipping category will be called in the control panel.' => 'コントロールパネルに表示するこの配送カテゴリの名前。', + 'What this shipping rule will be called in the control panel.' => 'コントロールパネルに表示するこの配送ルールの名前。', + 'What this shipping zone will be called in the control panel.' => 'コントロールパネルに表示するこの配送地域の名前。', + 'What this status will be called in the control panel.' => 'コントロールパネルに表示するこのステータスの名前。', + 'What this subscription plan will be called in the control panel.' => 'コントロールパネルに表示するこの定期支払いプランの名前。', + 'What this tax category will be called in the control panel.' => 'コントロールパネルに表示するこの税カテゴリの名前。', + 'What this tax zone will be called in the control panel.' => 'コントロールパネルに表示するこの税対象地域の名前。', + 'When this discount is applied to an order, which line items should be discounted?' => 'このディスカウントが注文に適用される場合、どのラインアイテムにディスカウントを適用しますか?', + 'Whether the first available shipping method option should be set automatically on carts.' => '最初に利用可能な配送方法オプションをカートに自動的に設定するかどうか。', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'ユーザーのプライマリの支払い元を自動的に新しいカートに設定するかどうか。', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'ユーザーのプライマリの配送先住所と請求先住所を自動的に新しいカートに設定するかどうか。', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => '他の条件に関係なく、このカタログ価格ルールを使用可能にしますか?', + 'Whether this sale should be available for use, regardless of other conditions.' => '他の条件に関係なく、このセールを使用可能にしますか?', + 'Which data to display in the name column in the results table.' => '結果テーブルの名前列に表示するデータ。', + 'Which product types should this category be available to?' => 'このカテゴリを使用できる商品タイプはどれですか?', + 'Which template should be loaded when a product’s URL is requested.' => '商品の URL がリクエストされた場合にロードするテンプレート。', + 'Width ({unit})' => '幅({unit})', + 'Width' => '幅', + 'YYYY' => 'YYYY', + 'Yes' => 'はい', + 'You are not allowed to add a line item.' => 'ラインアイテムを追加する権限がありません。', + 'You currently have no emails configured to select for this status.' => '現在、このステータスに選択できるメールが構成されていません。', + 'You do not have permission to load this cart.' => 'このカートを読み込む権限がありません。', + 'You must set up at least one gateway that supports subscriptions first.' => 'まず、定期支払いをサポートするゲートウェイを少なくとも 1 つセットアップする必要があります。', + 'You must be logged in or provide a valid token to load this cart.' => 'カートを読み込むにはログインするか、有効なトークンを入力してください。', + 'You must be signed in to create a payment source.' => '支払い元を作成するにはサインインする必要があります。', + 'You must be signed in to set a primary payment source.' => '主な支払い元を設定するにはサインインする必要があります。', + 'You must make a payment to complete the order.' => '注文を完了するには、支払いを行う必要があります。', + 'Your Cart Recovery Link' => 'カート復元リンク', + 'Your Order PDF Download Link' => 'お客様の注文PDFダウンロードリンク', + 'Your order is empty' => '注文内容がありません', + 'ZIP file' => 'ZIP ファイル', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'ゼロ - ディスカウントが注文価格を上回る場合、最低料金はゼロです。', + 'Zip Code' => '郵便番号', + 'all' => 'すべて', + 'any' => 'いずれか', + 'average order total' => '注文合計平均', + 'billing address' => '請求先住所', + 'donation' => '寄付', + 'donations' => '寄付', + 'info' => '情報', + 'inventory location' => '在庫場所', + 'new customers' => '新規顧客', + 'on hand' => '手持ち', + 'only' => 'のみ', + 'order' => '注文', + 'orders' => '注文', + 'price' => '価格', + 'prices' => '価格', + 'product variant' => '商品バリアント', + 'product variants' => '商品バリアント', + 'product' => '商品', + 'products' => '商品', + 'repeat customers' => 'リピート顧客', + 'shipping address' => '配送先住所', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'shippingSameAsBilling と billingSameAsShipping を同時に設定することはできません。', + 'subscription' => '定期支払い', + 'subscriptions' => '定期支払い', + 'to' => 'から', + 'transfer' => '移動', + 'transfers' => '移動', + '{amount} included' => '{amount} 込み', + '{count} Unfulfilled Orders' => '{count}件の履行されていない注文', + '{description} is no longer available.' => '{description}はご利用いただけません。', + '{description} only has {stock} in stock.' => '{description}の在庫数は {stock} のみです。', + '{from} to {to}' => '{from}から{to}', + '{name} (Primary)' => '{name} (既定)', + '{name} (Trashed)' => '{name} (破棄済み)', + '{name} catalog price' => '{name}カテゴリ価格', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, =1{注文} other{注文}}が更新されました。', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, =1{件の注文} other{件の注文}}が、{numUsers, plural, =1{ユーザー} other{ユーザー}}に関連付けられています。', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, =1{件のサブスクリプション} other{件のサブスクリプション}}が、{numUsers, plural, =1{ユーザー} other{ユーザー}}に対して有効化されています。', + '{number} more…' => 'その他 {number}...', + '{pct} off the discounted item price' => 'ディスカウントされたアイテム価格の {pct} 割引', + '{pct} off the original item price' => '元のアイテム価格の {pct} 割引', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, =1{は} other{は}}サイトにまだ割り当てられていません。', + '{total} in total revenue' => '合計収益の {total}', + '{total} orders' => '注文数 {total}', + '{total} saleable across {locationCount} location(s)' => '{locationCount}か所の場所全体での{total}件の販売可能品', + '{uses} uses across {emails} email addresses' => '{emails} 個のメールアドレスで {uses} 回使用', + '{uses} uses across {users} users' => '{users} 人のユーザーで {uses} 回使用', + '“{description}” is currently out of stock.' => '現在「{description}」の在庫はありません。', + '“{key}” has invalid JSON' => '「{key}」には無効なJSONがあります', +]; diff --git a/lang/nb/commerce.php b/lang/nb/commerce.php new file mode 100644 index 0000000000..708815842b --- /dev/null +++ b/lang/nb/commerce.php @@ -0,0 +1,1423 @@ + '(ny pris)', + '(of original price)' => '(av opprinnelig pris)', + '(off original price)' => '(av opprinnelig pris)', + 'A cart number must be specified.' => 'Et handlekurvnummer må spesifiseres.', + 'A cart recovery link has been sent to {email}.' => 'En lenke for gjenoppretting av handlekurv ble sendt til {email}.', + 'A cart recovery link will be sent to {email}.' => 'En lenke for gjenoppretting av handlekurv blir sendt til {email}.', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'Et vennlig referansenummer blir generert basert på dette formatet når en handlekurv er fullført og blir til en bestilling. F.eks. {ex1}, eller
{ex2}. Resultatet av dette formatet må være unikt.', + 'A new download link has been sent to {email}' => 'En ny lenke for nedlasting er sendt til {email}', + 'A new download link will be sent to {email}' => 'En ny lenke for nedlasting vil bli sendt til {email}', + 'A valid email is required to create a customer.' => 'For å opprette en kunde er det nødvendig med en gyldig e-postadresse.', + 'Accept' => 'Godta', + 'Accepted' => 'Godtatt', + 'Actions' => 'Handlinger', + 'Active Carts' => 'Aktive Handlevogner', + 'Active subscriptions' => 'Aktive abonnementer', + 'Active' => 'Aktiv', + 'Add Address' => 'Legg til adresse', + 'Add a coupon' => 'Legg til en kupong', + 'Add a custom line item' => 'Legg til et tilpasset linjeelement', + 'Add a line item' => 'Legg til en linjevare', + 'Add a product' => 'Legg til et produkt', + 'Add a variant' => 'Legg til en variasjon', + 'Add an adjustment' => 'Legg til en justering', + 'Add an item' => 'Legg til et element', + 'Add an option' => 'Legg til et valg', + 'Add catalog price' => 'Legg til katalogpris', + 'Add' => 'Legg til', + 'Additional Actions' => 'Flere handlinger', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'Flere mottakere av e-posten. Twig-kode kan brukes.', + 'Address 1' => 'Adresse 1', + 'Address 2' => 'Adresse 2', + 'Address 3' => 'Adresse 3', + 'Address Line 1' => 'Adresselinje 1', + 'Address Line 2' => 'Adresselinje 2', + 'Address Updated.' => 'Adresse oppdatert.', + 'Address copied to user.' => 'Adresse kopiert til bruker.', + 'Address not found.' => 'Adresse ikke funnet.', + 'Adjust Quantity' => 'Juster antall', + 'Adjust by' => 'Juster etter', + 'Adjust price when included rate is disqualified?' => 'Justere pris når inkludert sats er diskvalifisert?', + 'Adjustments' => 'Justeringer', + 'Admin Notices' => 'Administratorvarsler', + 'Administrative Area Code of Origin' => 'Opprinnelseskode for administrativt område', + 'Advanced' => 'Avansert', + 'All Orders' => 'Alle ordrer', + 'All Totals' => 'Alle totaler', + 'All Transfers' => 'Alle overføringer', + 'All active subscriptions' => 'Alle aktive abonnementer', + 'All customers' => 'Alle kunder', + 'All products' => 'Alle produkter', + 'All variants must have a SKU.' => 'Alle varianter må ha en SKU.', + 'All' => 'Alle', + 'Allow Checkout Without Payment' => 'Tillat bestilling uten betaling', + 'Allow Empty Cart On Checkout' => 'Tillat tom handlevogn ved bestilling', + 'Allow Partial Payment On Checkout' => 'Tillat delbetaling ved bestilling', + 'Allow out of stock purchases' => 'Tillat kjøp som er utsolgt', + 'Allow' => 'Tillat', + 'Allowed Qty' => 'Tillatt Antall', + 'Alternative Phone' => 'Alternativt telefonnummer', + 'Amount' => 'Mengde', + 'An ID must be provided' => 'Oppgi en ID', + 'An error occurred while generating this PDF.' => 'En feil oppstod under generering av denne PDF-en.', + 'Any' => 'Noen', + 'Anywhere' => 'Overalt', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => 'Er du sikker på at du vil arkivere “{name}” abonnementsplan? Den kansellerer IKKE eksisterende abonnementer.', + 'Are you sure you want to capture this transaction?' => 'Er du sikker på at du vil ta denne transaksjonen?', + 'Are you sure you want to complete this order?' => 'Er du sikker på at du vil fullføre ordren?', + 'Are you sure you want to delete the selected orders?' => 'Er du sikker på at du ønsker å slette de valgte ordrene?', + 'Are you sure you want to delete the selected product and its variants?' => 'Er du sikker på at du vil slette det valgte produktet og dets varianter?', + 'Are you sure you want to delete this shipping rule?' => 'Er du sikker på at du vil slette fraktregelen?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => 'Er du sikker på at du ønsker å slette “{name}” og alle tilhørende produkter? Vennligst vær sikker på at du har en sikkerhetskopi av databasen din før du utfører denne ødeleggende handlingen.', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => 'Er du sikker på at du vil slette «{name}»? Alle linjevarene med denne statusen vil få ingen status.', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'Er du sikker på at du vil merke denne overføring som Venter? Dette vil vises som innkommende på destinasjonen.', + 'Are you sure you want to overwrite the billing address?' => 'Er du sikker på at du vil overskrive faktureringsadressen?', + 'Are you sure you want to overwrite the shipping address?' => 'Er du sikker på at du vil overskrive leveringsadressen?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'Er du sikker på at du vil slette denne butikken og alt i den for godt?', + 'Are you sure you want to refund this transaction?' => 'Er du sikker på at du ønsker å refundere denne transaksjonen?', + 'Are you sure you want to remove this customer?' => 'Er du sikker på at du vil fjerne kunden?', + 'Are you sure you want to save this as a new shipping rule?' => 'Er du sikker på at du vil lagre dette som en ny fraktregel?', + 'Are you sure you want to send email: {name}?' => 'Er du sikker på at du vil sende denne e-posten: {name}?', + 'At least one site must be enabled for the product type.' => 'Minst ett nettsted må aktiveres for produkttypen.', + 'Attempted Payments' => 'Forsøkte betalinger', + 'Attention' => 'Vær oppmerksom på', + 'Authorize Only (Manually Capture)' => 'Kun autoriser (ta opp manuelt)', + 'Auto Set Cart Shipping Method Option' => 'Angi fraktalternativ automatisk', + 'Auto Set New Cart Addresses' => 'Angi nye adresser for handlevogn automatisk', + 'Auto Set Payment Source' => 'Angi betalingskilde automatisk', + 'Automatic SKU Format' => 'Automatisk SKU-format', + 'Available Shipping Categories' => 'Tilgjengelige fraktkategorier', + 'Available Tax Categories' => 'Tilgjengelige skattekategorier', + 'Available for purchase' => 'Tilgjengelig for kjøp', + 'Available for purchase?' => 'Tilgjengelig for kjøp?', + 'Available inventory for "{description}" has gone below zero.' => 'Tilgjengelig inventar for «{description}» har gått under null.', + 'Available to Product Types' => 'Tilgjengelig for produkttyper', + 'Available' => 'Tilgjengelig', + 'Available?' => 'Tilgjengelig?', + 'Average Order Total' => 'Gjennomsnittlig ordretotal', + 'Average' => 'Gjennomsnitt', + 'BCC’d Recipient' => 'BCC\'d-mottaker', + 'Bad Request' => 'Problem med forespørsel', + 'Bad address ID.' => 'Feil adresse-ID.', + 'Bad order ID.' => 'Feil ordre-ID.', + 'Base Price' => 'Grunnpris', + 'Base Promotional Price' => 'Grunnpris kampanje', + 'Base Rate' => 'Grunnpris', + 'Base' => 'Base', + 'Bcc' => 'Bcc', + 'Billing Address' => 'Faktureringsadresse', + 'Billing Business Name' => 'Fakturering firmanavn', + 'Billing First Name' => 'Fakturering fornavn', + 'Billing Full Name' => 'Fakturering fullt navn', + 'Billing Last Name' => 'Fakturering etternavn', + 'Billing address required.' => 'Faktureringsadresse nødvendig.', + 'Billing detail update URL' => 'URL for oppdatering av faktureringsinformasjon', + 'Billing issues' => 'Faktureringsproblemer', + 'Billing' => 'Fakturering', + 'Both (Line item price + Line item shipping costs)' => 'Begge (linjepris + forsendelseskostnader for vare i varelinje)', + 'Business ID' => 'Forretnings-ID', + 'Business Name' => 'Forretningsnavn', + 'Business Tax ID' => 'Forretningsskatte-ID', + 'CC’d Recipient' => 'CC\'d-mottaker', + 'CVV' => 'CW', + 'Can be used as an internal reference.' => 'Kan brukes som intern referanse.', + 'Can not complete payment for missing transaction.' => 'Kan ikke fullføre betaling for manglende transaksjon.', + 'Can not create a new order' => 'Kan ikke opprette en ny ordre', + 'Can not find an order to pay.' => 'Kan ikke finne en ordre å betale.', + 'Can not find enabled email.' => 'Kan ikke finne deaktivert e-post.', + 'Can not find order' => 'Kan ikke finne ordre', + 'Can not find order.' => 'Kan ikke finne ordre.', + 'Can not find the transaction to refund' => 'Kan ikke finne transaksjonen som skal refunderes', + 'Can not move between these inventory types.' => 'Kan ikke flyttes mellom disse inventartypene.', + 'Can not refund amount greater than the remaining amount' => 'Kan ikke refundere beløp større enn det opprinnelige beløpet', + 'Cancel subscription' => 'Kansellere abonnement', + 'Cancel with gateway now' => 'Avbryt med gateway nå', + 'Cancel' => 'Kansellere', + 'Cancellation date' => 'Kanselleringsdato', + 'Cancellation' => 'Kansellering', + 'Cannot switch plans for this subscription.' => 'Kan ikke bytte planer for dette abonnementet.', + 'Can’t preview this email.' => 'Kan ikke forhåndsvise e-posten.', + 'Capture payment' => 'Fang betaling', + 'Capture' => 'Ta', + 'Card Holder' => 'Kortholder', + 'Card Number' => 'Kortnummer', + 'Card' => 'Kort', + 'Cart Recovery Link' => 'Lenke for gjenoppretting av handlekurv', + 'Cart forgotten.' => 'Handlevogn glemt.', + 'Cart updated.' => 'Handlevogn oppdatert.', + 'Cart {number}' => 'Handlevogn {number}', + 'Catalog Pricing Rule' => 'Prisregel for katalog', + 'Catalog pricing rule description.' => 'Beskrivelse av prisregel for katalog.', + 'Catalog pricing rule saved.' => 'Prisregel for katalog lagret.', + 'Catalog pricing rules deleted.' => 'Prisregel for katalog slettet.', + 'Catalog pricing rules updated.' => 'Prisregel for katalog oppdatert.', + 'Categories Relationship Type' => 'Kategorienes forholdstype', + 'Categories' => 'Kategorier', + 'Category Rate Overrides' => 'Overstyrer kategorirate', + 'Centimeters (cm)' => 'Centimeter (cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'Endring av verdien kan ha innvirkning på din mulighet til å tilbakebetale eksisterende transaksjoner.', + 'Choose a color to represent the order’s status' => 'Velg en farge som skal brukes på ordrens status', + 'Choose a new customer' => 'Velg en ny kunde', + 'Choose adjustment values to include when calculating the product revenue total.' => 'Velg justeringsverdier som skal inkluderes under beregning av samlet produktinntekt.', + 'Choose the currency’s ISO code.' => 'Velg ISO-koden for valutaen.', + 'Choose the destination inventory location for the existing on hand stock.' => 'Velg målsted i inventar for eksisterende tilgjengelige lagervarer.', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'Velg hvilke nettsteder denne produkttypen skal være tilgjengelig på, og konfigurer innstillingene for hvert enkelt nettsted.', + 'City' => 'By', + 'Clear counter' => 'Fjern teller', + 'Clear notices' => 'Fjern merknader', + 'Close' => 'Lukk', + 'Code' => 'Kode', + 'Collated PDF' => 'Sortert PDF', + 'Color' => 'Farge', + 'Commerce Products' => 'Commerce-produkter', + 'Commerce Settings' => 'Commerce innstillinger', + 'Commerce Variants' => 'Salgsvarianter', + 'Commerce email “{email}” could not be sent for order “{order}”.' => 'Salgs-e-post «{email}» kunne ikke sendes for bestilling «{order}».', + 'Commerce order exports' => 'Eksport av handelsordre', + 'Commerce' => 'Handel', + 'Committed' => 'Forpliktet', + 'Completed Email' => 'Fullført e-postadresse', + 'Completed' => 'Fullført', + 'Completing order failed.' => 'Fullføring av ordre mislyktes.', + 'Condition' => 'Tilstand', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'Her matches betingelsene mot en ordre før reglene blir vurdert. Dette er nyttig hvis du ønsker å kvalifisere en metodes tilgjengelighet tidlig, eller hvis det finnes felles betingelser for alle reglene for denne metoden.', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'Her matches betingelsene mot ordrens kunde før reglene blir vurdert. Dette er nyttig hvis du ønsker å kvalifisere en metodes tilgjengelighet tidlig, eller hvis det finnes felles betingelser for alle reglene for denne metoden.', + 'Conditions' => 'Betingelser', + 'Contains Purchasables' => 'Inneholder kjøpbare varer', + 'Control Panel Settings' => 'Kontrollpanelinnstillinger', + 'Control panel' => 'Kontrollpanel', + 'Conversion Rate' => 'Konverteringskurs', + 'Converted Price' => 'Konvertert pris', + 'Copied!' => 'Kopiert!', + 'Copy the URL' => 'Kopier URL', + 'Copy to {location}' => 'Kopier til {location}', + 'Copy' => 'Kopier', + 'Costs' => 'Kostnader', + 'Could not archive gateway.' => 'Kunne ikke arkivere portal.', + 'Could not cancel “{reference}”.' => 'Kunne ikke kansellere «{reference}».', + 'Could not create the payment source.' => 'Kunne ikke opprette betalingskilde.', + 'Could not delete shipping rule' => 'Kunne ikke slette regel for forsendelse', + 'Could not delete shipping zone' => 'Kunne ikke slette forsendelsessone', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => 'Kunne ikke slette {count, number} frakt{count, plural, one{kategori} other{kategorier}}.', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => 'Kunne ikke slette {count, number} frakt{count, plural, one{metode} other{metoder}} og regler.', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => 'Kunne ikke slette {count, number} skatte{count, plural, one{kategori} other{kategorier}}.', + 'Could not find the email or template.' => 'Kunne ikke finne e-posten eller malen.', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => 'Kunne ikke merke ordren {number} som komplett. Lagring av bestilling mislyktes under fullføring av ordren med feil: {order}', + 'Could not reactivate “{reference}”.' => 'Kunne ikke reaktivere «{reference}».', + 'Could not send email' => 'Kunne ikke sende e-post', + 'Could not switch “{reference}” to “{plan}”.' => 'Kunne ikke bytte «{reference}» til «{plan}».', + 'Could not update orders address.' => 'Kunne ikke oppdatere ordreadresser.', + 'Couldn’t archive Line Item Status.' => 'Kunne ikke arkivere linjevarestatus.', + 'Couldn’t archive Order Status.' => 'Kunne ikke arkivere ordrestatus.', + 'Couldn’t capture transaction.' => 'Kunne ikke fange transaksjon.', + 'Couldn’t capture transaction: {message}' => 'Kunne ikke fange transaksjon: {message}', + 'Couldn’t delete email.' => 'Kunne ikke slette e-post.', + 'Couldn’t delete the payment source.' => 'Kunne ikke slette betalingskilde.', + 'Couldn’t get order.' => 'Kunne ikke hente ordre.', + 'Couldn’t recalculate order.' => 'Kunne ikke beregne ordre på nytt.', + 'Couldn’t refund transaction.' => 'Kunne ikke refundere transaksjon.', + 'Couldn’t refund transaction: {message}' => 'Kunne ikke refundere transaksjon: {message}', + 'Couldn’t reorder Line Item Statuses.' => 'Kunne ikke endre rekkefølgen på linjevarestatuser.', + 'Couldn’t reorder Order Statuses.' => 'Kunne ikke endre rekkefølgen på ordrestatuser.', + 'Couldn’t reorder PDFs.' => 'Kunne ikke endre rekkefølgen på PDF-er.', + 'Couldn’t reorder discounts.' => 'Kunne ikke endre rekkefølgen på rabatter.', + 'Couldn’t reorder gateways.' => 'Kunne ikke bestille portaler på nytt.', + 'Couldn’t reorder plans.' => 'Kunne ikke bestille planer på nytt.', + 'Couldn’t reorder rules.' => 'Kunne ikke endre rekkefølgen på regler.', + 'Couldn’t reorder sale.' => 'Kunne ikke endre rekkefølgen på salg.', + 'Couldn’t reorder sales.' => 'Kunne ikke endre rekkefølgen på salg.', + 'Couldn’t reorder statuses.' => 'Kunne ikke endre rekkefølgen på statuser.', + 'Couldn’t reorder stores.' => 'Kunne ikke endre rekkefølgen på butikker.', + 'Couldn’t save PDF.' => 'Kunne ikke lagre PDF.', + 'Couldn’t save catalog pricing rule.' => 'Kunne ikke lagre prisregel for katalog.', + 'Couldn’t save currency.' => 'Kunne ikke lagre valuta.', + 'Couldn’t save discount.' => 'Kunne ikke lagre rabatt.', + 'Couldn’t save email.' => 'Kunne ikke lagre e-post.', + 'Couldn’t save gateway.' => 'Kunne ikke lagre portal.', + 'Couldn’t save inventory location.' => 'Kunne ikke lagre inventarsted.', + 'Couldn’t save line item status.' => 'Kunne ikke lagre linjevarestatus.', + 'Couldn’t save order fields.' => 'Kunne ikke lagre ordrefelt.', + 'Couldn’t save order status.' => 'Kunne ikke lagre ordrestatus.', + 'Couldn’t save order.' => 'Kunne ikke lagre ordre.', + 'Couldn’t save product type.' => 'Kunne ikke lagre produkttype.', + 'Couldn’t save sale.' => 'Kunne ikke lagre salg.', + 'Couldn’t save settings.' => 'Kunne ikke lagre innstillinger.', + 'Couldn’t save shipping category.' => 'Kunne ikke lagre fraktkategori.', + 'Couldn’t save shipping method.' => 'Kunne ikke lagre fraktmetode.', + 'Couldn’t save shipping rule.' => 'Kunne ikke lagre fraktregel.', + 'Couldn’t save shipping zone.' => 'Kunne ikke lagre fraktsone.', + 'Couldn’t save store.' => 'Kunne ikke lagre butikk.', + 'Couldn’t save subscription fields.' => 'Kunne ikke lagre abonnementsfelter.', + 'Couldn’t save subscription plan.' => 'Kunne ikke lagre abonnementsplan.', + 'Couldn’t save subscription.' => 'Kunne ikke lagre abonnement.', + 'Couldn’t save tax category.' => 'Kunne ikke lagre avgiftskategori.', + 'Couldn’t save tax rate.' => 'Kunne ikke lagre skattesats.', + 'Couldn’t save tax zone.' => 'Kunne ikke lagre avgiftssone.', + 'Couldn’t save transfer fields.' => 'Kunne ikke lagre overføringsfelt.', + 'Couldn’t update catalog pricing rule statuses.' => 'Kunne ikke oppdatere status på prisregel for katalog.', + 'Couldn’t update status.' => 'Kunne ikke oppdatere status.', + 'Couldn’t updated sales status.' => 'Kunne ikke oppdatere salgstatus.', + 'Country Code of Origin' => 'Opprinnelseskode for land', + 'Country List' => 'Landliste', + 'Country not allowed.' => 'Land ikke tillatt.', + 'Country' => 'Land', + 'Coupon Code' => 'Rabattkode', + 'Coupon can not apply discount to this order due to address mismatch.' => 'Kupongen kan ikke brukes til å gi rabatt på denne ordren på grunn av adresseavvik.', + 'Coupon can not apply discount to this order due to customer mismatch.' => 'Kupongen kan ikke brukes til å gi rabatt på denne ordren på grunn av kundeavvik.', + 'Coupon can not apply discount to this order.' => 'Kupongen kan ikke brukes til å gi rabatt på denne ordren.', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'Kupongkoden «{code}» er allerede i bruk av rabatten «{name}».', + 'Coupon codes cannot be blank.' => 'Kupongkoder kan ikke være blank.', + 'Coupon codes must be unique.' => 'Kupongkoder må være unik.', + 'Coupon format is required and must contain at least one `#`.' => 'Kupongformat kreves og må inneholde minst én \'#\'.', + 'Coupon not valid.' => 'Kupongen er ikke gyldig.', + 'Coupon removed: {explanation}' => 'Kupong fjernet: {explanation}', + 'Coupons' => 'Kuponger', + 'Craft Commerce - Administration' => 'Craft Commerce – Administrasjon', + 'Craft Commerce - Inventory' => 'Craft Commerce – Inventar', + 'Craft Commerce - Orders' => 'Craft Commerce – Ordrer', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce – Produkttype – {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce – Abonnementer', + 'Create a Discount' => 'Opprett en rabatt', + 'Create a Subscription Plan' => 'Opprett en abonnementsplan', + 'Create a new PDF' => 'Opprett en ny PDF', + 'Create a new catalog pricing rule' => 'Opprett en ny prisregel for katalog', + 'Create a new currency' => 'Lag en ny valuta', + 'Create a new email' => 'Opprett en ny e-post', + 'Create a new gateway' => 'Opprett en ny portal', + 'Create a new line item status' => 'Opprett en ny linjevarestatus', + 'Create a new order status' => 'Opprett en ny ordrestatus', + 'Create a new product type' => 'Opprett ny produkttype', + 'Create a new sale' => 'Opprett et nytt salg', + 'Create a new shipping category' => 'Opprett en ny fraktkategori', + 'Create a new shipping method' => 'Opprett en ny fraktmetode', + 'Create a new shipping rule' => 'Opprett en ny fraktregel', + 'Create a new tax category' => 'Opprett en ny avgiftskategori', + 'Create a new tax rate' => 'Opprett en ny skattesats', + 'Create a product type' => 'Opprett en produkttype', + 'Create a shipping zone' => 'Opprett en fraktsone', + 'Create a tax zone' => 'Opprett en avgiftssone', + 'Create catalog pricing rules' => 'Opprett prisregler for katalog', + 'Create customer: “{email}”' => 'Opprett kunde: «{email}»', + 'Create discounts' => 'Opprett rabatter', + 'Create discount…' => 'Opprett rabatt ...', + 'Create rules that allow this discount to match the order.' => 'Opprett regler som lar denne rabatten matche bestillingen.', + 'Create rules that allow this discount to match the order’s billing address.' => 'Opprett regler som lar denne rabatten matche faktureringsadressen.', + 'Create rules that allow this discount to match the order’s customer.' => 'Opprett regler som lar denne rabatten matche kunden.', + 'Create rules that allow this discount to match the order’s shipping address.' => 'Opprett regler som lar denne rabatten matche leveringsadressen.', + 'Create rules that allow this gateway to match the billing address.' => 'Opprett regler som lar denne portalen matche faktureringsadressen.', + 'Create rules that allow this gateway to match the order.' => 'Opprett regler som lar denne portalen matche ordren.', + 'Create rules that allow this gateway to match the shipping address.' => 'Opprett regler som lar denne portalen matche faktureringsadressen.', + 'Create sales' => 'Opprett salg', + 'Create sale…' => 'Opprett salg …', + 'Created' => 'Opprettet', + 'Credit Card Payment Type' => 'Type kredittkortbetaling', + 'Currency Code' => 'Valutakode', + 'Currency saved.' => 'Valuta lagret.', + 'Currency' => 'Valuta', + 'Current' => 'Gjeldende', + 'Custom 1' => 'Kunde 1', + 'Custom 2' => 'Kunde 2', + 'Custom 3' => 'Kunde 3', + 'Custom 4' => 'Kunde 4', + 'Custom' => 'Egendefinert', + 'Customer Enabled?' => 'Kunde aktivert?', + 'Customer ID is required.' => 'Kunde-ID er nødvendig.', + 'Customer Note' => 'Kundemerknad', + 'Customer Notices' => 'Kundemerknader', + 'Customer data' => 'Kundedata', + 'Customer' => 'Kunde', + 'Damaged' => 'Skadet', + 'Data shown might be outdated.' => 'Vist data kan være utdatert.', + 'Date Authorized' => 'Dato for autorisasjon', + 'Date Created' => 'Dato Opprettet', + 'Date First Paid' => 'Første betalingsdato', + 'Date Ordered' => 'Dato Bestilt', + 'Date Paid' => 'Dato Betalt', + 'Date Updated' => 'Dato Oppdatert', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'Dato når prisregel for katalog vil aktiveres. La stå tomt for ubegrenset startdato', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'Datoen som rabatten vil aktiveres. La stå tom for ubegrenset startdato', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'Dato når salget vil aktiveres. La stå tomt for ubegrenset startdato', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'Dato når prisregel for katalog avsluttes. La stå tom for ubegrenset sluttdato', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'Dato når rabatten avsluttes. La stå tom for ubegrenset sluttdato', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'Dato når salget avsluttes. La stå tom for ubegrenset sluttdato', + 'Date' => 'Dato', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'Standard – la prisen være negativ hvis rabatter er større en ordreverdien.', + 'Default Category' => 'Standardkategori', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'Standard visning av Commerce-kontrollpanelet. Hvis brukeren ikke har tillatelse, vil de bli tatt tilbake til et sted de har tilgang til.', + 'Default Order PDF' => 'Standard ordre-PDF', + 'Default Per Item Rate' => 'Standard enhetspris', + 'Default Percentage Rate' => 'Standard prosentpris', + 'Default Status?' => 'Standardstatus?', + 'Default View' => 'Standardvisning', + 'Default Weight Rate' => 'Standard vektpris', + 'Default Zone' => 'Standard sone', + 'Default status?' => 'Standardstatus?', + 'Default to this tax zone when no billing address is set' => 'Sett dette som standard skattesone når ingen fakturaadresse er satt', + 'Default to this tax zone when no shipping address is set' => 'Standard til denne avgiftssonen når ingen leveringsadresse er satt', + 'Default variant updated.' => 'Standardvariant oppdatert.', + 'Default' => 'Standard', + 'Default?' => 'Standard?', + 'Delete catalog pricing rules' => 'Slett prisregler for katalog', + 'Delete discounts' => 'Slett rabatter', + 'Delete orders' => 'Slett ordrer', + 'Delete sales' => 'Slett salg', + 'Delete' => 'Slett', + 'Deleting the {location} location.' => 'Sletter stedet {location}.', + 'Describe this rule.' => 'Beskriv denne regelen.', + 'Describe this shipping zone.' => 'Beskriv denne fraktsonen.', + 'Describe this tax zone.' => 'Beskriv denne avgiftssonen.', + 'Description' => 'Beskrivelse', + 'Destination Inventory Location' => 'Målsted i inventar', + 'Destination' => 'Destinasjon', + 'Details' => 'Detaljer', + 'Dimension Unit' => 'Dimensjonsenhet', + 'Dimensions' => 'Dimensjoner', + 'Disabled' => 'Deaktivert', + 'Disallow' => 'Ikke tillat', + 'Discount all line items' => 'Rabatt på alle linjevarer', + 'Discount description.' => 'Beskrivelse av rabatt', + 'Discount is not allowed for the order' => 'Rabatter er ikke tillat for ordren', + 'Discount is out of date.' => 'Rabatt er utdatert.', + 'Discount saved.' => 'Rabatt lagret.', + 'Discount the matching items only' => 'Gi rabatt bare på matchende varer', + 'Discount use has reached its limit.' => 'Rabattbruk har nådd grensen.', + 'Discount' => 'Rabatt', + 'Discounted Item Subtotal' => 'Rabbatert delsum for vare', + 'Discounted Items' => 'Rabatterte artikler', + 'Discounts deleted.' => 'Rabatter slettet.', + 'Discounts reordered.' => 'Rabatter har ny rekkefølge.', + 'Discounts updated.' => 'Rabatter oppdatert.', + 'Discounts' => 'Rabatter', + 'Disqualify with valid business tax ID?' => 'Diskvalifisere med gyldig ID for virksomhetsskatt?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'Benytt ikke påfølgende overensstemmende salg utover dette salget.', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => 'Ikke bruk denne satsen hvis ordreadressen har noen av de valgte gyldige ID-ene for virksomhetsskatt.', + 'Do not attach a PDF to this email' => 'Ikke legg ved en PDF til denne e-posten', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'Ikke beregn ordre på nytt (nummer: {orderNumber}) hvis det er problemer.', + 'Donation can not be zero.' => 'Donasjon kan ikke være null.', + 'Donation needs to be an amount.' => 'Donasjon må være et beløp.', + 'Donation settings saved.' => 'Innstillinger for donasjon er lagret.', + 'Donation' => 'Donasjon', + 'Donations' => 'Donasjoner', + 'Done' => 'Ferdig', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'Ikke bruk påfølgende rabatter på en ordre hvis denne rabatten er brukt', + 'Download PDF' => 'Last ned PDF', + 'Download PDF…' => 'Last ned PDF …', + 'Download Type' => 'Type nedlastning', + 'Download' => 'Last ned', + 'Draft' => 'Utkast', + 'Dummy gateway payment failed.' => 'Dummy gateway-betaling mislyktes.', + 'Duplicate options exist' => 'Identiske valg eksisterer', + 'Duration' => 'Varighet', + 'EU VAT ID' => 'EU VAT-ID', + 'Edit address' => 'Rediger adresse', + 'Edit adjustments' => 'Rediger justeringer', + 'Edit catalog pricing rules' => 'Rediger prisregler for katalog', + 'Edit discounts' => 'Rediger rabatter', + 'Edit options' => 'Rediger valg', + 'Edit orders' => 'Rediger ordrer', + 'Edit sales' => 'Rediger salg', + 'Edit' => 'Rediger', + 'Effect' => 'Effekt', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'Både (standard) – forholdsfeltet er på Kan kjøpes-artikkelen eller kategorien', + 'Either way' => 'Uansett', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'Generering av PDF i e-post parse error for e-post «{email}». Ordre: «{order}». PDF-malfeil: «{message}» {file}:{line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'E-post PDF-mal finnes ikke på «{templatePath}» for e-post «{email}». Ordre: «{order}».', + 'Email Subject' => 'E-postens emne', + 'Email error. No email address found for order. Order: “{order}”' => 'Feil med e-post. Ingen e-postadresse funnet for bestilling. Bestilling: «{order}»', + 'Email is not enabled.' => 'E-post er ikke aktivert.', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'E-post-mal for tekst finnes ikke i «{templatePath}» og resulterte i «{templateParsedPath}» for e-post «{email}». Ordre: «{order}».', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-postmal for tekst parse error for e-post «{email}». Ordre: «{order}». Malfeil: «{message}» {file}:{line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-postmalbane for tekst parse error for e-post «{email}» i «Malbane». Ordre: «{order}». Malfeil: «{message}» {file}:{line}', + 'Email required to make payments on a completed order.' => 'E-post påkrevet for å foreta betalinger for en fullført bestilling.', + 'Email saved.' => 'E-post lagret.', + 'Email sent' => 'E-post sendt', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'E-post-mal finnes ikke i «{templatePath}» og resulterte i «{templateParsedPath}» for e-post «{email}». Ordre: «{order}».', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-postmal parse error for tilpasset e-post «{email}» i «Til:». Ordre: «{order}». Malfeil: «{message}» {file}:{line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-postmal parse error for e-post «{email}» i «BCC:». Ordre: «{order}». Malfeil: «{message}» {file}:{line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-postmal parse error for e-post «{email}» i «CC:». Ordre: «{order}». Malfeil: «{message}» {file}:{line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-postmal parse error for e-post «{email}» i «ReplyTo:». Ordre: «{order}». Malfeil: «{message}» {file}:{line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-postmal parse error for e-post «{email}» i «Emne:». Ordre: «{order}». Malfeil: «{message}» {file}:{line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-postmal parse error for e-post «{email}». Ordre: «{order}». Malfeil: «{message}» {file}:{line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'E-postmalbane parse error for e-post «{email}» i «Malbane:». Ordre: «{order}». Malfeil: «{message}» {file}:{line}', + 'Email unavailable.' => 'E-post utilgjengelig.', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => 'E-post «{email}» kunne ikke sendes for ordre «{order}». Error: {error} {file}:{line}', + 'Email “{email}” for order {order} was cancelled.' => 'E-post «{email}» for ordre {order} ble kansellert.', + 'Email' => 'Epost', + 'Emails' => 'E-poster', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'Aktiver hvis denne satsen skal implementeres i den skattbare produktprisen i stedet for å legge et påslag til ordren.', + 'Enable structure for products of this type' => 'Aktiver struktur for produkter av denne typen', + 'Enable this discount' => 'Aktiver denne rabatten', + 'Enable this rule' => 'Deaktiver denne regelen', + 'Enable this sale' => 'Aktiver dette salget', + 'Enable this shipping method on the front end' => 'Aktiver denne leveringsmetoden på frontsiden', + 'Enable this shipping rule' => 'Aktiver denne fraktregelen', + 'Enable this tax rate' => 'Rediger denne skattesatsen', + 'Enabled for customers to select during checkout?' => 'Aktivert slik at kunder kan velge det under utsjekking?', + 'Enabled for customers to select?' => 'Aktivert for å kunne velges av kunder?', + 'Enabled' => 'Aktivert', + 'Enabled?' => 'Aktivert', + 'End Date' => 'Sluttdato', + 'Enter SKU' => 'Angi SKU', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'Skriv et menneskevennlig navn for denne skattesatsen som skal brukes i kontrollpanelet.', + 'Enter a percentage like {ex1} or {ex2}.' => 'Skriv inn en prosent, som {ex1} eller {ex2}.', + 'Enter coupon code' => 'Skriv inn kupongkode', + 'Enter reference' => 'Skriv inn referanse', + 'Error refunding transaction: {transactionHash}' => 'En feil oppstod under tilbakebetalingstransaksjonen: {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'Alle nye butikker må tilordnes minst ett nettsted.', + 'Everywhere' => 'Overalt', + 'Example' => 'Eksempel', + 'Exclude this discount for products that are already on promotion' => 'Ekskluder denne rabatten for produkter som allerede er med i en kampanje', + 'Expired Link' => 'Utløpt lenke', + 'Expired' => 'Utløpt', + 'Expiry Date' => 'Utløpsdato', + 'Expiry date' => 'Utløpsdato', + 'Expiry' => 'Utløpsdato', + 'Failed to receive transfer: {error}' => 'Kunne ikke hente overføring: {error}', + 'Failed to send email. Please try again.' => 'Kunne ikke sende e-post. Prøv igjen.', + 'Failed to start' => 'Kunne ikke starte', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => 'Kunne ikke oppdatere {num, plural, =1{ordrestatus} other{ordrestatuser}}.', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => 'Kunne ikke oppdatere ordrestatus for {num, plural, =1{ordre} other{ordrer}}.', + 'Feet (ft)' => 'Fot (ft)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'Filterbetingelser som beskriver hvilke ordre denne regelen gjelder. Skriv 0 for å hoppe over en betingelse.', + 'First Name' => 'Fornavn', + 'Flat Amount Off Order' => 'Flatt rabattbeløp på ordre', + 'Flat Order Discount Amount Off' => 'Beløp på flat ordrerabattsats', + 'Free Order Payment Strategy' => 'Betalingsstrategi for gratis ordre', + 'Free Shipping' => 'Gratis levering', + 'Free orders are processed by the payment gateway' => 'Gratisordrer behandles av betalingsportalen', + 'Free orders complete immediately' => 'Gratisordrer fullføres umiddelbart', + 'Free shipping can only be for whole order or matching items, not both.' => 'Gratis frakt kan bare gjelde for hele ordrer eller matchende varer, ikke begge deler.', + 'From Name' => 'Fra Navn', + 'Fulfill' => 'Fullfør', + 'Fulfilled' => 'Fullført', + 'Fulfillment' => 'Fullbyrdelse', + 'Full Name' => 'Fullt navn', + 'Gateway Code' => 'Portalkode', + 'Gateway Message' => 'Portalmelding', + 'Gateway Reference' => 'Portalreferanse', + 'Gateway Response' => 'Portalrespons', + 'Gateway doesn’t support authorize' => 'Systemport støtter ikke autorisering', + 'Gateway doesn’t support partial refunds.' => 'Portalen støtter ikke delvise tilbakebetalinger.', + 'Gateway doesn’t support purchase' => 'Portalen støtter ikke kjøp', + 'Gateway doesn’t support refunds.' => 'Portalen støtter ikke tilbakebetalinger.', + 'Gateway saved.' => 'Portal lagret.', + 'Gateway' => 'Port', + 'Gateways reordered.' => 'Portaler har ny rekkefølge.', + 'Gateways' => 'Portaler', + 'General Settings' => 'Generelle innstillinger', + 'General' => 'Generelt', + 'Generate' => 'Genrerer', + 'Generated Coupon Format' => 'Generert kupongformat', + 'Grams (g)' => 'Gram (g)', + 'Groups for which this sale will be applicable to.' => 'Grupper som dette salget gjelder for.', + 'HTML Email Template Path' => 'HTML E-postmal Vei', + 'Handle' => 'Håndter', + 'Harmonized System Code' => 'Harmonisert systemkode', + 'Has Admin Notices' => 'Har administratorvarsler', + 'Has Emails?' => 'Har e-poster?', + 'Has Free Shipping' => 'Har gratis frakt', + 'Has Orders' => 'Har ordre', + 'Has Purchasable' => 'Har Kan kjøpes-artikler', + 'Has Variants?' => 'Har varianter?', + 'Height ({unit})' => 'Høyde ({unit})', + 'Height' => 'Høyde', + 'Hide snapshot' => 'Skjul snapshot', + 'History' => 'Historikk', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'Hvor lenge (i sekunder) en PDF-nedlastingslenke skal være gyldig før den utløper. Standard er 86400 sekunder (24 timer).', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => 'Hvor mange ganger en e-postadresse har lov til å bruke denne rabatten. Dette gjelder alle tidligere bestillinger, enten for gjest eller bruker. Sett til null for ubegrenset bruk av gjester eller brukere.', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => 'Antall ganger en bruker har lov til å bruke denne rabatten. Hvis dette er satt til noe annet enn null, vil rabatten kun være tilgjengelig for påloggede brukere.', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'Antall ganger denne rabatten kan bli brukt av gjester eller påloggede brukere. Sett til null for ubegrenset bruk.', + 'How products should be labeled within the control panel.' => 'Slik skal oppføringer merkes i kontrollpanelet.', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'Måten kjøpbare artikler og kategorier er tilknyttet, noe som fastlegger samsvarende varer. Se [Relasjonsterminologi]({link}).', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'Hvordan dette produktet vil bli beskrevet på varelinjen i en bestilling. Du kan inkludere koder som utgangsegeneskaper, slik som {ex1} eller {ex2}', + 'How this shipping method will be referred to in templates and forms.' => 'Hvordan denne leveringsmetoden vil refereres til i malene og skjemaene.', + 'How variants should be labeled within the control panel.' => 'Slik skal varianter merkes i kontrollpanelet.', + 'How you’ll refer to this PDF in the templates.' => 'Måten du henviser til denne PDF-en i malen.', + 'How you’ll refer to this product type in the templates.' => 'Hvordan du henviser til denne produkttypen i malene.', + 'How you’ll refer to this shipping category in the templates.' => 'Hvordan du refererer til denne fraktkategorien i malene.', + 'How you’ll refer to this status in the templates.' => 'Hvordan du henviser til denne statusen i malene.', + 'How you’ll refer to this subscription plan in the templates.' => 'Hvordan du refererer til denne abonnementsplanen i malene.', + 'How you’ll refer to this tax category in the templates.' => 'Hvordan du henviser til denne skattekategorien i malene.', + 'ID' => 'ID', + 'IP Address' => 'IP-adresse', + 'If disabled, this PDF will not be available or sent with emails.' => 'Hvis deaktivert, vil denne PDF-en verken være tilgjengelig eller sendes med e-poster.', + 'If disabled, this email will not send.' => 'Hvis deaktivert, blir denne e-posten ikke sendt.', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => 'Hvis aktivert, og denne skattesatsen ikke samsvarer med bestillingen, blir satsbeløpet fjernet fra produktprisen i handlekurven.', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'Hvis den settes til "Kun ved autorisasjon", må du manuelt hente inn betalinger før beløpet overføres til kontoen din. Gateway må støtte det valgte alternativet.', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => 'Hvis du velger at prosenten skal være «avslag på rabattert pris», vil det inkludere «Beløp per vare» i tillegg til andre rabatter som er lagt til tidligere.', + 'Ignore Promotions?' => 'Ignorere kampanjer?', + 'Ignore previous matching sales if this sale matches.' => 'Ignorere forrige samsvarende salg hvis dette salget samsvarer.', + 'Ignore promotional prices when this discount is applied to matching line items' => 'Ignorer kampanjepriser når rabatten er brukt på samsvarende linjevarer', + 'Inactive Carts' => 'Inaktive vogner', + 'Inches (in)' => 'Tommer (")', + 'Include built-in line item tax.' => 'Inkluder innebygd linjevareavgift.', + 'Include in price?' => 'Inkluder i pris?', + 'Include line item discounts.' => 'Inkluder linjevarerabatt.', + 'Include line item shipping costs.' => 'Inkluder forsendelseskostnader for linjevare.', + 'Include separate line item tax.' => 'Inkluder separat linjevareavgift.', + 'Included in price?' => 'Inkludert i pris?', + 'Included' => 'Inkludert', + 'Incoming transfer from Transfer ID: ' => 'Innkommende overføring fra overførings-ID: ', + 'Incoming' => 'Innkommende', + 'Info' => 'Info', + 'Information linked?' => 'Informasjon lenket?', + 'Information' => 'Informasjon', + 'Invalid JSON' => 'Ugyldig JSON', + 'Invalid Order ID' => 'Ugyldig ordre-ID', + 'Invalid VAT ID.' => 'Ugyldig MVA-ID.', + 'Invalid condition syntax' => 'Ugyldig tilstandssyntaks', + 'Invalid email.' => 'Ugyldig e-post.', + 'Invalid formula syntax' => 'Ugyldig formelsyntaks', + 'Invalid gateway: {value}' => 'Ugyldig portal: {value}', + 'Invalid inventory movements.' => 'Ugyldig inventarforflytninger.', + 'Invalid order condition syntax.' => 'Ugyldig tilstandssyntaks for ordre.', + 'Invalid payment or order. Please review.' => 'Ugyldig betaling eller bestilling. Må endres.', + 'Invalid payment source ID: {value}' => 'Ugyldig betalingskilde-ID: {value}', + 'Invalid store.' => 'Ugyldig butikk.', + 'Invalid user.' => 'Ugyldig bruker.', + 'Inventory Item' => 'Lagervare', + 'Inventory Location' => 'Inventarsted', + 'Inventory Locations' => 'Inventarsteder', + 'Inventory Tracked' => 'Inventar sporet', + 'Inventory Transfers' => 'Lageroverføringer', + 'Inventory could not be set.' => 'Inventar kunne ikke angis.', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => 'Inventarsted har forpliktet lagerbeholdning, ordre(ne) må først fullføres.', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => 'Inventarsted har innkommende lagerbeholdning, overføringen(e) må først fullføres.', + 'Inventory location is already deactivated.' => 'Inventarsted er allerede deaktivert.', + 'Inventory location saved.' => 'Inventarsted lagret.', + 'Inventory locations not saved.' => 'Inventarsteder ikke lagret.', + 'Inventory movement could not be saved.' => 'Inventarforflytninger kunne ikke bli lagret.', + 'Inventory movement saved.' => 'Inventarforflytninger lagret.', + 'Inventory updated.' => 'Inventar oppdatert.', + 'Inventory was not updated.' => 'Inventar ble ikke oppdatert.', + 'Inventory' => 'Inventar', + 'Invoice amount' => 'Fakturabeløp', + 'Invoice date' => 'Fakturadato', + 'Is Promotable' => 'Kan promoteres', + 'Is Promotional Price?' => 'Kampanjepris?', + 'Is Shippable' => 'Kan sendes', + 'Is Taxable' => 'Kan skattes', + 'Item Rates' => 'Varepriser', + 'Item Subtotal' => 'Delsum for vare', + 'Item Total' => 'Varetotal', + 'Item' => 'Vare', + 'Items' => 'Elementer', + 'Kilograms (kg)' => 'Kilogram (kg)', + 'Label' => 'Merkelapp', + 'Landscape' => 'Landskap', + 'Language' => 'Språk', + 'Last Name' => 'Etternavn', + 'Last Updated' => 'Sist oppdatert', + 'Leave a category rate override blank to use the rate from above.' => 'La en overstyring av kategorirate stå tom for å bruke en pris ovenfra.', + 'Leave blank for unlimited uses.' => 'La stå tomt for ubegrenset bruk.', + 'Leave blank if products don’t have URLs' => 'Skal stå tomt hvis produktene ikke har nettadresser (URL)', + 'Leave gateway subscription as-is' => 'La gateway-abonnementet være uendret', + 'Length ({unit})' => 'Lengde ({unit})', + 'Length' => 'Lengde', + 'Let each product choose which sites it should be saved to' => 'La hvert produkt velge hvilket nettsted det skal lagres til', + 'Limit which orders this discount applies to based on its line items.' => 'Begrens hvilke ordre denne rabatten gjelder for basert på linjevarer.', + 'Limit which purchasables this sale applies to.' => 'Begrens hvilke «Kan kjøpes»-varer dette salget gjelder for.', + 'Limit' => 'Grense', + 'Line Item Statuses' => 'Linjevarestatuser', + 'Line Item' => 'Linjevare', + 'Line Items' => 'Linjevarer', + 'Line item price (minus discounts)' => 'Varelinjepris (minus rabatter)', + 'Line item shipping cost' => 'Forsendelseskostnader for vare i varelinje', + 'Line item statuses reordered.' => 'Linjevarestatuser har ny rekkefølge.', + 'Link Duration' => 'Lenkens varighet', + 'Link Sent' => 'Lenke sendt', + 'Link to a product' => 'Lag lenke til et produkt', + 'Link to a variant' => 'Lag lenke til en variant', + 'Link' => 'Lenke', + 'Live' => 'Direkte', + 'Location' => 'Sted', + 'Locations that should be available for previewing products in this product type.' => 'Plasseringer som bør være tilgjengelig for forhåndsvisning av produkter av denne produkttypen.', + 'MM' => 'MM', + 'Make a payment' => 'Betal', + 'Make this the primary store' => 'Vil du gjøre dette til primærbutikk', + 'Manage Inventory' => 'Behandle inventar', + 'Manage donation settings' => 'Administrer donasjonsinnstillinger', + 'Manage general store settings' => 'Administrer generelle butikkinnstillinger', + 'Manage inventory locations' => 'Behandle inventarsteder', + 'Manage inventory stock levels' => 'Behandle inventarnivåer', + 'Manage inventory transfers' => 'Administrer lageroverføringer', + 'Manage orders' => 'Administrer ordrer', + 'Manage payment currencies' => 'Administrer betalingsvalutaer', + 'Manage promotions' => 'Administrer kampanjer', + 'Manage shipping' => 'Administrer frakt', + 'Manage store settings' => 'Administrer butikkinnstillinger', + 'Manage subscription plans' => 'Administrer abonnementsplaner', + 'Manage subscription' => 'Administrer abonnement', + 'Manage subscriptions' => 'Administrer abonnementer', + 'Manage taxes' => 'Administrer avgifter', + 'Manage' => 'Administrer', + 'Mark as Pending' => 'Merk som Venter', + 'Mark as completed' => 'Merk som ferdig', + 'Match Billing Address' => 'Match faktureringsadresse', + 'Match Customer' => 'Match kunde', + 'Match Order' => 'Match ordre', + 'Match Orders' => 'Match ordrer', + 'Match Product' => 'Match produkt', + 'Match Purchasable' => 'Sammenlign kan kjøpes-artikler', + 'Match Shipping Address' => 'Match fraktadresse', + 'Match Variant' => 'Match variant', + 'Matching Items' => 'Samsvarende varer', + 'Max Qty' => 'Maks. antall', + 'Max Uses' => 'Maks. antall brukere', + 'Max Variants' => 'Maks. varianter', + 'Max quantity must greater than min.' => 'Maksimal mengde må være større enn min.', + 'Maximum Purchase Quantity' => 'Maksimumskjøp kvantitet', + 'Maximum Total Shipping Cost' => 'Maksimal total fraktkostnad', + 'Maximum allowed quantity' => 'Maksimalt tillatt antall', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'Maksimalt antall samsvarende varer som kan bestilles for at denne rabatten trer i kraft. Null i verdi vil her hoppe over denne betingelsen.', + 'Maximum order quantity for this item is {num}.' => 'Maksimumsantall som kan bestilles av denne artikkelen er {num}.', + 'Message' => 'Beskjed', + 'Meters (m)' => 'Meter (m)', + 'Millimeters (mm)' => 'Millimeter (mm)', + 'Min Qty' => 'Min. antall', + 'Min quantity must be less than max.' => 'Minimum mengde må være mindre enn maks.', + 'Minimum Purchase Quantity' => 'Minimumskjøp kvantitet', + 'Minimum Total Price Strategy' => 'Strategi for minimum totalpris', + 'Minimum Total Shipping Cost' => 'Minimum på total fraktkostnad', + 'Minimum allowed quantity' => 'Minimum tillatt antall', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'Minimalt antall samsvarende varer som må bestilles for at denne rabatten skal gjelde.', + 'Minimum order quantity for this item is {num}.' => 'Minimumsantall for denne artikkelen er {num}.', + 'Missing Gateway' => 'Mangler portal', + 'Missing a default inventory location.' => 'Mangler et standard inventarsted.', + 'Move Inventory' => 'Flytt inventar', + 'Move To' => 'Flytt til', + 'Move {qty} from {fromType} to {toType}' => 'Flytt {qty} fra {fromType} til {toType}', + 'Move' => 'Flytt', + 'Movement from deactivated inventory location' => 'Forflytning fra deaktivert inventarsted', + 'Movement' => 'Forflytning', + 'Must have at least one variant.' => 'Må ha minst én variant.', + 'Name Field' => 'Navnfelt', + 'Name' => 'Navn', + 'New Customer' => 'Nyt kunde', + 'New Customers' => 'Nye kunder', + 'New Order' => 'Ny ordre', + 'New PDF' => 'Ny PDF', + 'New address' => 'Ny adresse', + 'New catalog pricing rule' => 'Ny prisregler for katalog', + 'New currency' => 'Ny valuta', + 'New discount' => 'Ny rabatt', + 'New email' => 'Ny e-post', + 'New gateway' => 'Ny portal', + 'New line item status' => 'Ny linjevarestatus', + 'New line items get this status by default when the order is completed' => 'Ny linjevarer får denne statusen som standard når ordren er fullført', + 'New location' => 'Nytt sted', + 'New order status' => 'Ny bestillingsstatus', + 'New orders get this status by default' => 'Nye bestillinger får denne statusen som standard', + 'New product type' => 'Ny betalingsmetode', + 'New product' => 'Nytt produkt', + 'New product, choose a type' => 'Nytt produkt, velg type', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => 'Nye produkter oppføres som standard med den første tilgjengelige skattekategorien. Hvis ingen er tilgjengelige, brukes denne kategorien.', + 'New sale' => 'Nytt salg', + 'New shipping category' => 'Ny fraktkategori', + 'New shipping method' => 'Ny fraktmetode', + 'New shipping rule' => 'Ny fraktregel', + 'New shipping zone' => 'Ny fraktsone', + 'New subscription plan' => 'Ny abonnementsplan', + 'New tax category' => 'Ny skattekategori', + 'New tax rate' => 'Ny skattehyppighet', + 'New tax zone' => 'Ny skattesone', + 'New transfer' => 'Ny overføring', + 'New {productType} product' => 'Nytt {productType}-produkt', + 'New' => 'Ny', + 'Next payment' => 'Neste betaling', + 'No Address' => 'Ingen adresse', + 'No PDFs exist yet.' => 'Ingen PDF-er eksisterer ennå.', + 'No access given to any specific store management features.' => 'Ingen tilgang gitt til noen spesifikke butikkadministrasjonsfunksjoner.', + 'No additional payment currencies exist yet.' => 'Ingen ekstra betalingsvaluta finnes ennå', + 'No address' => 'Ingen adresse', + 'No billing address' => 'Ingen faktureringsadresse', + 'No catalog pricing rule exists with the ID “{id}”' => 'Ingen prisregel for katalog eksisterer med ID-en «{id}»', + 'No catalog pricing rules exist yet.' => 'Ingen prisregler for katalog eksisterer ennå.', + 'No currency exists with the ID “{id}”' => 'Ingen valuta finnes med denne ID-en «{id}»', + 'No customer email address exists on this cart.' => 'Det eksisterer ingen kunde-e-postadresse på denne handlekurven.', + 'No description' => 'Ingen beskrivelse', + 'No discount exists with the ID “{id}”' => 'Ingen rabatt eksisterer med ID-en «{id}»', + 'No discounts exist yet.' => 'Ingen rabatter finnes ennå.', + 'No donation amount supplied.' => 'Ingen donasjonsbeløp levert.', + 'No emails exist yet.' => 'Ingen e-poster finnes ennå.', + 'No inventory changes made.' => 'Ingen inventarendringer gjort.', + 'No inventory found.' => 'Ingen inventar funnet.', + 'No inventory movements made.' => 'Ingen inventarforflytninger gjort.', + 'No inventory transactions for this location.' => 'Ingen inventaroverføringer for dette stedet.', + 'No new customer selected.' => 'Ingen ny kunde valgt.', + 'No order history exists with the ID “{id}”' => 'Ingen ordrehistorikk eksisterer med ID-en «{id}»', + 'No order status history items will exist until the cart becomes an order.' => 'Ingen historikk-elementer for ordrestatus eksisterer før handlekurven blir en ordre.', + 'No payment source exists with the ID “{id}”' => 'Det finnes ingen betalingskilde med ID-en «{id}»', + 'No private Note.' => 'Ingen privat merknad.', + 'No product available.' => 'Ingen produkt tilgjengelig.', + 'No product types exist yet.' => 'Ingen produkttyper finnes ennå.', + 'No purchasable available.' => 'Ingen Kan kjøpes-artikler tilgjengelig.', + 'No sale exists with the ID “{id}”' => 'Ingen salg eksisterer med ID-en «{id}»', + 'No sales exist yet.' => 'Ingen salg finnes ennå.', + 'No shipping address' => 'Ingen fraktadresse', + 'No shipping category exists with the ID “{id}”' => 'Ingen fraktkategori finnes med den ID-en «{id}»', + 'No shipping method exists with the ID “{id}”' => 'Ingen fraktmetode eksisterer med ID-en «{id}»', + 'No shipping rule exists with the ID “{id}”' => 'Ingen fraktregel eksisterer med ID-en «{id}»', + 'No shipping rules exist yet.' => 'Ingen fraktregler finnes ennå.', + 'No shipping zone exists with the ID “{id}”' => 'Ingen fraktsone eksisterer med ID-en «{id}»', + 'No stats available.' => 'Ingen statistikk tilgjengelig.', + 'No subscription plan exists with the ID “{id}”' => 'Det finnes ingen abonnementsplan med ID-en «{id}»', + 'No subscription plans exist yet.' => 'Det finnes ingen abonnementsplan ennå.', + 'No tax category exists with the ID “{id}”' => 'Ingen skattekategori eksisterer med ID-en «{id}»', + 'No tax rate exists with the ID “{id}”' => 'Ingen skattesatsen eksisterer med ID-en «{id}»', + 'No tax zone exists with the ID “{id}”' => 'Ingen skattesone eksisterer med ID-en «{id}»', + 'No transactions exist.' => 'Ingen transaksjoner eksisterer.', + 'No user authenticated.' => 'Ingen bruker autentisert.', + 'No' => 'Nei', + 'None on hand' => 'Ingen for hånden', + 'None' => 'Ingen', + 'Not a valid address type' => 'Ikke en gyldig adressetype', + 'Not a valid credit card number.' => 'Ikke et gyldig kredittkortnummer.', + 'Not all SKUs are unique.' => 'Ikke alle produktkoder (SKU) er unike.', + 'Note' => 'Merk', + 'Notes' => 'Merknader', + 'Number of Coupons' => 'Antall kuponger', + 'Number' => 'Nummer', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => 'Av de aktiverte sidene ovenfor, til hvilke sider skal produktene i denne produkttypen lagres?', + 'On Hand' => 'Tilgjengelig', + 'Only allow this gateway to be used for zero value orders?' => 'Kun tillate at denne portalen brukes for nullverdi-bestillinger?', + 'Only match certain purchasables…' => 'Kombiner bare bestemte «Kan kjøpes»-artikler …', + 'Only match purchasables related to…' => 'Kombiner bare «Kan kjøpes»-artikler knyttet til …', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => 'Kun ordrer med følgende ordrestatuser vil bli inkludert. La stå tomt for å inkludere alle statuser.', + 'Only save product to the site they were created in' => 'Lagre produkter kun til siden de ble laget på', + 'Options' => 'Valg', + 'Order Condition Formula' => 'Formel for ordretilstand', + 'Order Description Format' => 'Ordrebeskrivelse format', + 'Order Details' => 'Ordredetaljer', + 'Order Fields' => 'Bestillingsfelt', + 'Order PDF Download Link' => 'Nedlastingslenke for PDF-ordre', + 'Order PDF Filename Format' => 'Bestillings PDF-filnavn format', + 'Order Reference Number Format' => 'Format for bestillingsreferanse', + 'Order Settings' => 'Ordreinnstillinger', + 'Order Site' => 'Ordreside', + 'Order Status description.' => 'Beskrivelse av ordrestatus.', + 'Order Status' => 'Ordrestatus', + 'Order Statuses' => 'Bestillingsstatuser', + 'Order can not be empty.' => 'Ordre kan ikke stå tomt.', + 'Order count' => 'Antall ordre', + 'Order customer data removed.' => 'Kundedata bestilt fjernet.', + 'Order deleted.' => 'Ordre slettet.', + 'Order fields saved.' => 'Ordrefelt lagret.', + 'Order not found.' => 'Ordre ikke funnet.', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => 'Saldoen for ordren er {outstandingBalanceAsCurrency}. Dette er det høyeste beløpet som vil bli belastet.', + 'Order recalculated.' => 'Ordre beregnet på nytt.', + 'Order status saved.' => 'Ordrestatus lagret.', + 'Order statuses reordered.' => 'Ordrestatuser har ny rekkefølge.', + 'Order total shipping cost' => 'Total forsendelseskostnad for ordren', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => 'Bestillingens totale avgiftspliktige pris (linjepris delsum + totale rabatter + totale forsendelseskostnader)', + 'Order' => 'Ordre', + 'Orders (Legacy)' => 'Ordrer (eldre)', + 'Orders deleted.' => 'Ordrer slettet.', + 'Orders not restored.' => 'Ordre ble ikke gjenopprettet.', + 'Orders restored.' => 'Bestillinger gjenopprettet.', + 'Orders' => 'Ordre', + 'Organization Name' => 'Organisasjonsnavn', + 'Organization Tax ID' => 'Skatte-ID for organisasjon', + 'Origin and destination cannot be the same.' => 'Opprinnelse og destinasjon kan ikke være det samme.', + 'Origin' => 'Opprinnelse', + 'Original Price' => 'Opprinnelig pris', + 'Original price' => 'Opprinnelig pris', + 'Original promotional price' => 'Opprinnelig kampanjepris', + 'Other Languages' => 'Andre språk', + 'Other countries' => 'Andre land', + 'Outgoing transfer from Transfer ID: ' => 'Utgående overføring fra overførings-ID: ', + 'Overpaid' => 'Overbetalt', + 'Overrides previous?' => 'Overstyrer forrige?', + 'PDF Attachment' => 'PDF-vedlegg', + 'PDF Template Path' => 'Bane for PDF-mal', + 'PDF saved.' => 'PDF lagret.', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'PDF-er og e-poster', + 'PDFs' => 'PDF-er', + 'Paid Amount' => 'Betalt beløp', + 'Paid Status' => 'Betalingsstatus', + 'Paid' => 'Betalt', + 'Paper Orientation' => 'Papirretning', + 'Paper Size' => 'Papirstørrelse', + 'Partial payment not allowed.' => 'Delbetaling ikke tillatt.', + 'Partial' => 'Delvis', + 'Past year' => 'Siste år', + 'Past {num} days' => 'Siste {num} dager', + 'Pay {amount} of {currency} on the order.' => 'Betal {amount} i {currency} på ordren.', + 'Pay' => 'Betal', + 'Payment Amount' => 'Betalingssum', + 'Payment Currencies' => 'Betalingsvalutaer', + 'Payment Gateway' => 'Betalingsportal', + 'Payment Method' => 'Betalingsmetode', + 'Payment error: {message}' => 'Betalingsfeil: {message}', + 'Payment method issue' => 'Problem med betalingsmetode', + 'Payment source created.' => 'Betalingskilde opprettet.', + 'Payment source deleted.' => 'Betalingskilde slettet.', + 'Payments' => 'Betalinger', + 'Pending' => 'Venter', + 'Per Email Address Discount Limit' => 'Rabattgrense per e-postadresse', + 'Per Item Amount Off' => 'Rabattbeløp per vare', + 'Per Item Discount' => 'Rabatt per enhet', + 'Per Item Percentage Off' => 'Rabatt per vare', + 'Per Item Rate' => 'Enhetspris', + 'Per User Discount Limit' => 'Rabattgrense per bruker', + 'Percentage Rate' => 'Prosentpris', + 'Phone (Alt)' => 'Telefonnummer (alt.)', + 'Phone' => 'Telefon', + 'Pick a plan' => 'Velg en plan', + 'Plain Text Email Template Path' => 'Malbane for tekst-e-post', + 'Plan' => 'Plan', + 'Plans reordered.' => 'Planer har ny rekkefølge.', + 'Portrait' => 'Portrett', + 'Post Date' => 'Postdato', + 'Postal Code Formula' => 'Postnummer-formel', + 'Pounds (lb)' => 'Pund (lb)', + 'Preview' => 'Forhåndsvis', + 'Previous Status' => 'Tidligere status', + 'Price' => 'Pris', + 'Prices' => 'Priser', + 'Pricing Rules' => 'Prisregler', + 'Pricing jobs are currently running.' => 'Prisjobber pågår.', + 'Pricing' => 'Prissetting', + 'Primary Billing Address' => 'Primær faktureringsadresse', + 'Primary Shipping Address' => 'Primær fraktadresse', + 'Primary payment source updated.' => 'Primær betalingskilde oppdatert.', + 'Primary' => 'Primær', + 'Private Note' => 'Privat merknad', + 'Product Fields' => 'Produktfelt', + 'Product ID is required.' => 'Produkt-ID nødvendig.', + 'Product Template' => 'Produktmal', + 'Product Title Format' => 'Tittelformat for produkt', + 'Product Type' => 'Produkttype', + 'Product Types' => 'Produkttyper', + 'Product URI Format' => 'URI-format for produkt', + 'Product Variant' => 'Produktvariant', + 'Product Variants' => 'Produktvarianter', + 'Product type saved.' => 'Produkttype lagret.', + 'Product type settings' => 'Innstillinger for produkttype', + 'Product' => 'Produkt', + 'Products and Variants deleted.' => 'Produkter og varianter slettet.', + 'Products not restored.' => 'Produkter ble ikke gjenopprettet.', + 'Products restored.' => 'Produkter gjenopprettet.', + 'Products' => 'Produkter', + 'Promotable' => 'Promoterbar', + 'Promotable?' => 'Promoterbar?', + 'Promotional Amount' => 'Kampanjebeløp', + 'Promotional Price' => 'Kampanjepris', + 'Purchasable Categories' => 'Kategorier som kan kjøpes', + 'Purchasable ID and Sale ID are required.' => 'Kjøpbar- og salg-ID nødvendig.', + 'Purchasable ID is required.' => 'Kjøpbar-ID nødvendig.', + 'Purchasable Type' => 'Typer som kan kjøpes', + 'Purchasable' => 'Kan kjøpes', + 'Purchase (Authorize and Capture Immediately)' => 'Kjøp (autoriser og fang umiddelbart)', + 'Purchase Total' => 'Kjøpstotal', + 'Qty' => 'Ant.', + 'Quality Control' => 'Kvalitetskontroll', + 'Quantity' => 'Kvantitet', + 'Rate' => 'Pris', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => 'Tildel {numOrders, plural, =1{ordre} other{ordrer}}', + 'Recalculate order' => 'Beregn ordre på nytt', + 'Receive Inventory' => 'Motta lager', + 'Receive Transfer' => 'Motta overføring', + 'Receive' => 'Motta', + 'Received' => 'Mottatt', + 'Recent Orders' => 'Nylige ordrer', + 'Recipient' => 'Mottaker', + 'Recover Cart' => 'Gjenopprett handlekurv', + 'Reduce price' => 'Reduser pris', + 'Reduce the price by a fixed amount' => 'Reduser pris med et fast beløp', + 'Reduce the price by a percentage of the original price' => 'Reduser prisen med en prosentdel av den opprinnelige prisen', + 'Reference' => 'Referanse', + 'Refresh payment history' => 'Oppdater betalingshistorikk', + 'Refund note' => 'Merknad til tilbakebetaling', + 'Refund payment' => 'Refunder betaling', + 'Refund' => 'Refusjon', + 'Reject' => 'Avslå', + 'Rejected' => 'Avslått', + 'Relationship Type' => 'Forholdstype', + 'Removable included tax rates are only allowed for the default tax zone.' => 'Inkluderte skatter og avgifter som kan fjernes, er kun tillatt for standard skattesone.', + 'Remove address' => 'Fjern adresse', + 'Remove all shipping costs from the order' => 'Fjern alle fraktkostnader fra bestillingen', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => 'Fjern kundetilknytning og e-post fra {numOrders, plural, =1{ordre} other{ordrer}}. Valgfritt: velg ytterligere kundedata som skal fjernes nedenfor', + 'Remove customer data' => 'Fjern kundedata', + 'Remove from price?' => 'Fjern fra pris?', + 'Remove shipping costs for matching items only' => 'Fjern fraktkostnader kun for identiske varer', + 'Remove the included tax when a valid organization tax ID is present?' => 'Fjerne inkludert skatt når det er en gyldig organisasjonsskatt?', + 'Remove' => 'Fjern', + 'Removed' => 'Fjernet', + 'Repeat Customers' => 'Tilbakevendende kunder', + 'Reply To' => 'Svar til', + 'Require Billing Address At Checkout' => 'Krev faktureringsadresse ved bestilling', + 'Require Coupon Code' => 'Krever kupongkode', + 'Require Shipping Address At Checkout' => 'Krev fraktadresse ved bestilling', + 'Require Shipping Method Selection At Checkout' => 'Krev valg av leveringsmetode ved bestilling', + 'Require' => 'Krever', + 'Reserved' => 'Reservert', + 'Reset usage' => 'Tilbakestill bruk', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'Begrens rabatten til kun bestillinger hvor kunden har kjøpt produkter til et minimumsbeløp med matchende varer.', + 'Revenue Options' => 'Alternativer for inntekt', + 'Revenue' => 'Inntekt', + 'Rule' => 'Regel', + 'Rules reordered.' => 'Regler har ny rekkefølge.', + 'SKU' => 'SKU', + 'Safety' => 'Sikkerhet', + 'Sale Price' => 'Salgspris', + 'Sale description.' => 'Salgsbeskrivelse.', + 'Sale reordered.' => 'Salg har ny rekkefølge.', + 'Sale saved.' => 'Salg lagret.', + 'Sale' => 'Salg', + 'Sales deleted.' => 'Salg slettet.', + 'Sales updated.' => 'Salg er oppdatert.', + 'Sales' => 'Salg', + 'Save and continue editing' => 'Lagre og fortsett redigering', + 'Save and return to all orders' => 'Lagre og gå tilbake til alle ordre', + 'Save and set rules' => 'Lagre og fastsett regler', + 'Save as a new rule' => 'Lagre som en ny regel', + 'Save product to all sites enabled for this product type' => 'Lagre produkt på alle sider som er aktivert for denne produkttypen', + 'Save product to other sites in the same site group' => 'Lagre produkt på andre sider i samme sidegruppe', + 'Save product to other sites with the same language' => 'Lagre produkt på andre sider med samme språk', + 'Save' => 'Lagre', + 'Search customer…' => 'Søk på kunde…', + 'Search inventory' => 'Søk i inventar', + 'Search or enter customer email…' => 'Søk eller skriv inn e-post til kunden …', + 'Search…' => 'Søk…', + 'See Orders' => 'Se ordre', + 'Select a gateway' => 'Velg en ny portal', + 'Select a tax category.' => 'Velg en skattekategori.', + 'Select a tax zone. If empty, this rate will match anywhere.' => 'Velg en skattesone. Hvis tomt, vil satsen samsvare med hvor som helst.', + 'Select address' => 'Velg adresse', + 'Select an item' => 'Velg et element', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'Velg hvordan prisregel for katalog skal anvendes på varen(e).', + 'Select how the sale will be applied to the purchasable(s).' => 'Velg hvordan salget skal anvendes på varen(e).', + 'Select product type' => 'Velg produkttype', + 'Select the emails that will be sent when transitioning to this status.' => 'Selv e-postene som vil sendes ved overgang til denne statusen.', + 'Select what this rate should be applied to.' => 'Velg hva denne satsen skal gjelde for.', + 'Send Email' => 'Send e-post', + 'Send to custom recipient' => 'Send til tilpasset mottaker', + 'Send to the customer' => 'Send til kunden', + 'Set Quantity' => 'Angi antall', + 'Set default category' => 'Angi standardkategori', + 'Set default variant' => 'Angi standardvariant', + 'Set or Adjust' => 'Angi eller juster', + 'Set price' => 'Angi pris', + 'Set status' => 'Sett status', + 'Set the price to a flat amount' => 'Sett prisen til et flatt beløp', + 'Set the price to a percentage of the original price' => 'Sett prisen til en prosentdel av den opprinnelige prisen', + 'Set the sale price to a flat amount' => 'Angi salgsprisen til et flatt beløp', + 'Set the sale price to a percentage of the original price' => 'Angi salgsprisen til en prosentdel av den opprinnelige prisen', + 'Set to' => 'Angi som', + 'Settings saved.' => 'Innstillinger lagret.', + 'Settings' => 'Innstillinger', + 'Share cart…' => 'Del handlekurv …', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => 'Frakt – minimumskostnad er fraktkostnaden, hvis ordreprisen er mindre enn fraktkostnaden.', + 'Shipping Address Zone' => 'Fraktadressesone', + 'Shipping Address' => 'Fraktadresse', + 'Shipping Business Name' => 'Frakt firmanavn', + 'Shipping Categories' => 'Fraktkategorier', + 'Shipping Category Conditions' => 'Betingelser for fraktkategori', + 'Shipping Category' => 'Fraktkategori', + 'Shipping First Name' => 'Frakt fornavn', + 'Shipping Full Name' => 'Frakt fullt navn', + 'Shipping Last Name' => 'Frakt etternavn', + 'Shipping Method' => 'Fraktmetode', + 'Shipping Methods' => 'Leveringsmetoder', + 'Shipping Rule' => 'Fraktregel', + 'Shipping Zones' => 'Fraktsoner', + 'Shipping address required.' => 'Forsendelsesadresse nødvendig.', + 'Shipping categories deleted.' => 'Fraktkategorier slettet.', + 'Shipping category saved.' => 'Fraktkategori er lagret.', + 'Shipping category updated.' => 'Fraktkategori oppdatert.', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'Fraktkostnader lagt til ordren som en helhet før prosent-, vare-, og vektsatser blir brukt. Sett til null for å deaktivere denne satsen. Hele regelen, inkludert denne grunnsatsen, vil ikke samsvare og gjelde hvis handlekurven inneholder elementer som ikke kan sendes, for eksempel digitale produkter.', + 'Shipping method saved.' => 'Fraktmetode lagret.', + 'Shipping methods and rules deleted.' => 'Fraktmetoder og regler slettet.', + 'Shipping methods updated.' => 'Leveringsmetoder oppdatert.', + 'Shipping rule saved.' => 'Fraktregel lagret.', + 'Shipping zone saved.' => 'Fraktsone lagret.', + 'Shipping' => 'Levering', + 'Short Number' => 'Kort nummer', + 'Show Chart?' => 'Vise handlekurv?', + 'Show Order Count?' => 'Vise antall ordre?', + 'Show all prices' => 'Vis alle priser', + 'Show archived gateways' => 'Vis arkiverte portaler', + 'Show order count line on chart.' => 'Vis linje for antall ordre i tabell.', + 'Show related sales' => 'Vis relaterte salg', + 'Show rule details' => 'Vis detaljer om regel', + 'Show the Dimensions and Weight fields for products of this type' => 'Vis mål- og vektfelt for slike produkter', + 'Show the Title field for products' => 'Vis tittelfeltet for produkter', + 'Show the Title field for variants' => 'Vis tittelfeltet for varianter', + 'Signed In' => 'Logget inn', + 'Site Languages' => 'Nettsidespråk', + 'Site store mapping saved.' => 'Kartleggingen av butikk lagret.', + 'Sites' => 'Nettsteder', + 'Slug' => 'Lenke', + 'Snapshot' => 'Snapshot', + 'Snapshots' => 'Snapshots', + 'Some orders restored.' => 'Enkelte ordrer ble gjenopprettet.', + 'Some products restored.' => 'Enkelte produkter ble gjenopprettet.', + 'Some variants restored.' => 'Noen varianter ble gjenopprettet.', + 'Something changed with the order before payment, please review your order and submit payment again.' => 'Noe endret seg ved bestillingen før betaling, vennligst se over bestillingen og send betalingen igjen.', + 'Sorry, no matching options.' => 'Beklager, ingen tilsvarende valg.', + 'Source - The purchasable relationship field is on the category' => 'Kile – forholdsfeltet for Kan kjøpes-artikler er på kategorien', + 'Source' => 'Kilde', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Spesifiser en Twig-tilstand som bestemmer om rabatten skal anvendes på en gitt ordre. (Ordren kan henvises til via en `order`-variabel.)', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Spesifiser en Twig-tilstand som bestemmer om fraktregelen skal anvendes på en gitt ordre. (Ordren kan henvises til via en `order`-variabel.)', + 'Start Date' => 'Startdato', + 'State' => 'Stat', + 'Status Email Address' => 'E-postadresse-status', + 'Status Emails' => 'E-postadresse-statuser', + 'Status History' => 'Statushistorikk', + 'Status Updated.' => 'Status oppdatert.', + 'Status change message' => 'Melding ved statusendring', + 'Status' => 'Status', + 'Stock' => 'Beholdning', + 'Stops Processing?' => 'Stoppe behandling?', + 'Stops subsequent?' => 'Stopper påfølgende?', + 'Store Location' => 'Stedet for butikk', + 'Store Management' => 'Butikkadministrasjon', + 'Store Markets' => 'Butikkmarkeder', + 'Store Rule' => 'Butikkregel', + 'Store saved.' => 'Butikk lagret.', + 'Store' => 'Butikk', + 'Stores & Sites' => 'Butikker og nettsteder', + 'Stores' => 'Butikker', + 'Strategy to apply when an order is free or has a zero balance.' => 'Strategien som skal brukes, når en ordre er gratis eller har en saldo som står i null.', + 'Strategy to apply when calculating the minimum order price.' => 'Strategi å bruke når du beregner minimumspris for ordre.', + 'Subject' => 'Emne', + 'Subscribing user' => 'Abonnerende bruker', + 'Subscription Fields' => 'Abonnementsfelt', + 'Subscription Plans' => 'Abonnementsplaner', + 'Subscription Settings' => 'Abonnementsinnstillinger', + 'Subscription cancelled.' => 'Abonnement kansellert.', + 'Subscription date' => 'Abonnementsdato', + 'Subscription fields saved.' => 'Abonnementsfelt er lagret.', + 'Subscription for {user} to {plan} prevented by a plugin.' => 'Abonnement for {user} til {plan} forhindret av en programutvidelse.', + 'Subscription plan saved.' => 'Abonnementsplan er lagret.', + 'Subscription plan' => 'Abonnementsplan', + 'Subscription plans' => 'Abonnementsplaner', + 'Subscription reactivated.' => 'Abonnement reaktivert.', + 'Subscription reference' => 'Referanse for abonnement', + 'Subscription started.' => 'Abonnement startet.', + 'Subscription switched.' => 'Abonnement byttet.', + 'Subscription to “{plan}”' => 'Abonnement på «{plan}»', + 'Subscription' => 'Abonnement', + 'Subscriptions on hold' => 'Abonnement på vent', + 'Subscriptions' => 'Abonnementer', + 'Suppress emails' => 'Undertrykk e-poster', + 'Switch plan' => 'Bytte plan', + 'Switch' => 'Bytte', + 'System' => 'System', + 'Table Columns' => 'Tabellkolonner', + 'Target - The category relationship field is on the purchasable' => 'Mål – feltet for kategoriforhold er på Kan kjøpes-artikkelen', + 'Tax & Shipping' => 'Avgift og frakt', + 'Tax (inc)' => 'Avgift (inkludert)', + 'Tax Categories' => 'Skattekategorier', + 'Tax Category' => 'Skattekategori', + 'Tax Rates' => 'Skatteavgifter', + 'Tax Zone' => 'Skattesone', + 'Tax Zones' => 'Skattesoner', + 'Tax categories deleted.' => 'Skattekategorier slettet.', + 'Tax category saved.' => 'Skattekategori lagret.', + 'Tax category updated.' => 'Avgiftskategori oppdatert.', + 'Tax rate saved.' => 'Skattesats lagret.', + 'Tax rates updated.' => 'Skattesatser ble oppdatert.', + 'Tax zone saved.' => 'Skattesone lagret.', + 'Tax' => 'Avgift', + 'Taxable Subject' => 'Skattepliktig enhet', + 'Template Path' => 'Mal-vei', + 'That handle is already in use' => 'Etiketten er allerede i bruk', + 'That handle is already in use.' => 'Etiketten er allerede i bruk.', + 'The PDF to attach to this email.' => 'PDF-en som skal legges til e-posten.', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => 'Lenken til sidenfor oppdatering av faktureringsinformasjon for et abonnement, samt administrering av 3DS-autentisering.', + 'The address provided is outside the store’s market.' => 'Adressen som er oppgitt er utenfor butikkens marked.', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => 'Rabattbeløpet som er brukt på hele ordren. Beløpet er spredt over linjevarene i rekkefølgen fra høyest til lavest pris til rabatten er brukt opp.', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => 'Grunnrabatten gjelder bare for varer i handlekurven ned til null inntil den er brukt opp. Ordren kan ikke bli negativ.', + 'The cart recovery link is invalid. Please request a new one.' => 'Lenken for gjenoppretting av handlekurv er ugyldig. Be om en ny.', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => 'Konverteringskursen som vil bli brukt når man konverterer en sum til denne valutaen. For eksempel, hvis en vare koster {amount1}, vil en konverteringskurs på {rate} resultere i {amount2} i den alternative valutaen.', + 'The countries that orders are allowed to be placed from.' => 'Landene det er tillatt å legge inn bestillinger fra.', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'Kupongen «{code}» har overskredet bruksgrensen på {limit}.', + 'The customer for this order has been deleted.' => 'Kunden for denne ordren ble slettet.', + 'The default shipping category is automatically available to all product types.' => 'Standard fraktkategori er automatisk tilgjengelig for alle produkttyper.', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'Rabatten «{name}» har overskredet bruksgrensen på {limit}.', + 'The download link has expired. Please request a new one.' => 'Nedlastingslenken er utløpt. Be om en ny.', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => 'E-postadressen som e-poster med bestillingsstatus sendes fra. La stå tomt for å bruke systemets e-postadresse som er definert i Crafts generelle innstillinger.', + 'The entry that contains the description for this subscription’s plan.' => 'Oppføringen som inneholder beskrivelse for denne abonnementsplanen.', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => 'Den flate verdien som gir avslag på hver vare, f.eks. «3» for $3 avslag på hver vare.', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => 'Formatet som brukes til å generere nye kuponger, f.eks. {example}. Alle \'#\'-tegn blir byttet ut med en tilfeldig bokstav.', + 'The from and to inventory locations must be different.' => 'Inventarstedene til og fra må være forskjellige.', + 'The inventory locations this store uses.' => 'Inventarstedene denne butikken bruker.', + 'The item is not enabled for sale.' => 'Denne artikkelen er ikke aktivert for salg.', + 'The language the order was made in.' => 'Språket som ordren ble laget i.', + 'The language to be used when this email is rendered.' => 'Språk som skal brukes i e-posten som genereres.', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'Maksimalt antall nivåer tillatt i produkttypen. La stå tomt hvis det ikke spiller noen rolle.', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => 'Det maksimale en kunde skal betale i frakt. Sett til null for å deaktivere.', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => 'Det minste kunden skal betale i frakt. Sett til null for å deaktivere.', + 'The order is not valid.' => 'Ugyldig ordre.', + 'The payment gateway that will be used for the subscription plan.' => 'Hvilken betalingsportal skal brukes for abonnementsplanen.', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => 'Den prosentvise verdien som skal brukes som rabatt på hver vare. F.eks. {ex1} for en rabatt på {ex2}. Prosenten rundes av til to desimaler.', + 'The previously-selected shipping method is no longer available.' => 'Tidligere valgt leveringsmetode er ikke lenger tilgjengelig.', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Prisen på {description} har økt fra {originalSalePriceAsCurrency} til {newSalePriceAsCurrency}', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Prisen på {description} har blitt redusert fra {originalSalePriceAsCurrency} til {newSalePriceAsCurrency}', + 'The primary currency cannot be changed after orders are placed.' => 'Hovedvalutaen kan ikke endres etter at ordren er sendt inn.', + 'The purchasable defines the relationship' => '«Kan kjøpes»-artikkelen definerer forholdet', + 'The purchasable is related by another element' => '«Kan kjøpes»-artikkelen er relatert til et annet element', + 'The recipient of the email. Twig code can be used here.' => 'Mottakeren av e-posten. Twig-kode kan brukes.', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => 'E-postadresser som svar skal sendes til. La stå tomt for vanlig "svar til" fra e-postavsender. Twig-kode kan brukes.', + 'The site the order was made in.' => 'Nettstedet som ordren ble laget på.', + 'The site to be used when this email is rendered.' => 'Nettstedet som skal brukes i e-posten som genereres.', + 'The subject line of the email. Twig code can be used here.' => 'Emnefeltet til e-posten. Twig-kode kan brukes.', + 'The template that the PDF should be generated from.' => 'Malen som PDF-en skal genereres fra.', + 'The template to be used for HTML emails.' => 'Malen som skal brukes for HTML-e-poster.', + 'The template to be used for plain text emails. Twig code can be used here.' => 'Malen som skal brukes for enkle e-poster med tekst. Twig-kode kan brukes.', + 'The template to use when a product’s URL is requested.' => 'Malen som skal brukes når URL-en til et produkt blir forespurt om.', + 'The total number of order adjustments changed.' => 'Det totale antallet ordrejusteringer er endret.', + 'The total price of the order changed.' => 'Totalprisen på bestillingen er endret.', + 'The total quantity of items within the order changed.' => 'Den totale størrelsen på varer i ordren er endret.', + 'The unique SKU of the donation purchasable.' => 'Den unike SKU-en for donasjonen som kan kjøpes.', + 'The unit of measurement that should be used when specifying product dimensions.' => 'Måleenheten som skal brukes ved spesifikasjon av produktmål.', + 'The unit of measurement that should be used when specifying product weights.' => 'Måleenheten som skal brukes ved spesifikasjon av produktets vekt.', + 'The webhook URL for this gateway.' => 'Webhook-URL for gatewayen.', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => '“Fra”-navnet som skal brukes ved sending av e-poster med bestillingsstatuser. La stå tomt for å bruke avsendernavnet som er definert i Crafts generelle innstillinger.', + 'There are errors on the order' => 'Det er feil i ordren', + 'There are only {num} “{description}” items left in stock.' => 'Det er kun {num} «{description}»-artikler igjen på lager.', + 'There aren’t any product types to select yet.' => 'Det er ingen produkttyper å velge ennå.', + 'There is no gateway or payment source available for use with this order.' => 'Det er ingen portal eller betalingskilde tilgjengelig for denne ordren.', + 'There is no gateway selected that supports payment sources.' => 'Det er ikke valgt noen portal som støtter betalingskilder.', + 'There is no shipping method selected for this order.' => 'Det er ikke valgt noen leveringsmetode for denne ordren.', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'Denne URL-en laster handlekurven inn i brukerens økt, slik at den blir den aktive handlekurven.', + 'This action is not allowed for the current user.' => 'Denne handlingen er ikke tillatt for nåværende bruker.', + 'This category will be used as the default for all purchasables in this store.' => 'Denne kategorien vil bli brukt som standard for alle varer som kan kjøpes i denne butikken.', + 'This coupon is for registered users and limited to {limit} uses.' => 'Denne kupongen er for registrerte brukere og begrenset til {limit} bruk.', + 'This coupon is limited to {limit} uses.' => 'Denne kupongen er begrenset til {limit} bruk.', + 'This coupon requires an email address.' => 'En e-postadresse er nødvendig for å bruke kupongen.', + 'This gateway does not support that functionality.' => 'Denne portalen støtter ikke den funksjonaliteten.', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'Dette bli overstyrt av konfigurasjonsinnstillingen {setting} i `config/{file}.php`.', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'Dette er adressen hvor butikken din ligger. Det kan bli brukt av ulike programutvidelser for å bestemme ting som frakt og skatt. Den kan også brukes i PDF-kvitteringer.', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'Dette er standard-PDF-en som lages nårman henter fram ordre-PDF-en.', + 'This is the last location for the {store} store.' => 'Dette er siste sted for butikken {store}.', + 'This month' => 'Denne måneden', + 'This order has unsaved changes.' => 'Ordren har endringer som ikke er lagret.', + 'This week' => 'Denne uken', + 'This year' => 'Dette året', + 'Times Used' => 'Tid brukt', + 'Title' => 'Tittel', + 'To' => 'Til', + 'Today' => 'I dag', + 'Too many variants for this product.' => 'For mange varianter for dette produktet.', + 'Top Customers by Average Order' => 'Topp kunder etter gjennomsnittssordre', + 'Top Customers by Total Revenue' => 'Topp kunder etter total inntekt', + 'Top Customers' => 'Topp kunder', + 'Top Product Types by Qty Sold' => 'Topp produkttyper etter antall solgt', + 'Top Product Types by Revenue' => 'Topp produkttyper etter inntekt', + 'Top Product Types' => 'Topp produkttyper', + 'Top Products by Qty Sold' => 'Topp produkter etter antall solgt', + 'Top Products by Revenue' => 'Topp produkttyper etter inntekt', + 'Top Products' => 'Topp produkter', + 'Top Purchasables by Qty Sold' => 'Topp Kan kjøpes-artikler etter antall solgt', + 'Top Purchasables by Revenue' => 'Topp Kan kjøpes-artikler etter inntekt', + 'Top Purchasables' => 'De beste Kan kjøpes-artikler', + 'Total ' => 'Sum ', + 'Total Discount Use Limit' => 'Grense på samlet rabattbruk', + 'Total Discount' => 'Total rabatt', + 'Total Included Tax' => 'Sum inkludert avgift', + 'Total Orders by Billing Country' => 'Totalt antall ordrer etter faktureringsland', + 'Total Orders by Country' => 'Totalt antall ordrer etter land', + 'Total Orders by Shipping Country' => 'Totalt antall ordrer etter fraktland', + 'Total Orders' => 'Totalt antall ordre', + 'Total Paid' => 'Total betalt', + 'Total Price' => 'Totalpris', + 'Total Qty' => 'Totalt antall', + 'Total Revenue' => 'Total inntekt', + 'Total Shipping' => 'Total frakt', + 'Total Tax' => 'Total avgift', + 'Total Weight' => 'Samlet vekt', + 'Total' => 'Sum', + 'Track Inventory' => 'Spor inventar', + 'Transaction Hash' => 'Transaksjons-Hash', + 'Transaction ID' => 'Transaksjons-ID', + 'Transaction captured successfully: {message}' => 'Vellykket fanging av transaksjoner: {message}', + 'Transaction refunded successfully: {message}' => 'Vellykket refusjon av transaksjon: {message}', + 'Transactions' => 'Transaksjoner', + 'Transfer Fields' => 'Overføringsfelt', + 'Transfer Items' => 'Overføringselement', + 'Transfer Settings' => 'Overføringsinnstillinger', + 'Transfer Status' => 'Overføringsstatus', + 'Transfer fields saved.' => 'Overføringsfelt lagret.', + 'Transfer must have at least one item.' => 'Overføringer må ha minst ett element.', + 'Transfer' => 'Overføring', + 'Transfers' => 'Overføringer', + 'Trial days credited' => 'Prøvedager kreditert', + 'Trial expiration' => 'Utløpstid for prøveperiode', + 'Trial expiry date' => 'Utløpsdato for utprøving', + 'Type not in allowed options.' => 'Type ikke med blant tillatte alternativer.', + 'Type' => 'Type', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => 'Kan ikke avbryte abonnementet nå.', + 'Unable to complete order: another request is already in progress.' => 'Kunne ikke fullføre ordren: En annen forespørsel er allerede i gang.', + 'Unable to find variant.' => 'Kan ikke finne variant.', + 'Unable to generate coupon codes: {message}' => 'Kan ikke generere kupongkoder: {message}', + 'Unable to make payment at this time.' => 'Kan ikke utføre betaling nå.', + 'Unable to modify subscription at this time.' => 'Kan ikke endre abonnementet nå.', + 'Unable to reactivate subscription at this time.' => 'Kan ikke reaktivere abonnementet nå.', + 'Unable to reassign orders.' => 'Kunne ikke tilordne ordrer på nytt.', + 'Unable to remove order data.' => 'Kunne ikke fjerne ordredata.', + 'Unable to retrieve Sale and Purchasable.' => 'Kan ikke hente salg eller Kan kjøpes-artikler.', + 'Unable to retrieve cart.' => 'Kan ikke hente handlekurv.', + 'Unable to retrieve customer.' => 'Kan ikke hente kunde.', + 'Unable to retrieve load cart URL' => 'Kan ikke hente URL for innlasting av handlekurv', + 'Unable to retrieve payment source.' => 'Kunne ikke hente betalingskilde.', + 'Unable to set default shipping category.' => 'Kan ikke angi standard fraktkategori.', + 'Unable to set default tax category.' => 'Kan ikke angi standard avgiftskategori.', + 'Unable to set primary payment source.' => 'Kunne ikke angi primær betalingskilde.', + 'Unable to start the subscription. Please check your payment details.' => 'Kan ikke starte abonnement. Kontroller dine betalingsdetaljer.', + 'Unable to subscribe at this time.' => 'Kan ikke abonnere nå.', + 'Unable to update cart.' => 'Kan ikke oppdatere handlekurv.', + 'Unable to validate address.' => 'Kan ikke validere adresser.', + 'Unit Price' => 'Enhetspris', + 'Unit price (minus discounts)' => 'Enhetspris (minus rabatter)', + 'Units' => 'Enheter', + 'Unpaid' => 'Ubetalt', + 'Unsubscribe' => 'Avslutte abonnement', + 'Update Address' => 'Oppdater adressen', + 'Update Order Status' => 'Oppdater bestillingsstatus', + 'Update Order Status…' => 'Oppdater ordrestatus ...', + 'Update order' => 'Oppdater ordre', + 'Update subscription' => 'Oppdater abonnement', + 'Update' => 'Oppdater', + 'Updated By' => 'Oppdatert av', + 'Updated committed stock successfully.' => 'Forpliktet beholdning oppdatert.', + 'Updated' => 'Oppdatert', + 'Use Billing Address For Tax' => 'Bruk faktureringsadresse for avgift', + 'Use as the primary billing address' => 'Bruk som den primære faktureringsadressen', + 'Use as the primary shipping address' => 'Bruk som den primære leveringsadressen', + 'Used By Tax Rates' => 'Bruk av skattesatser', + 'Used by Tax Rates' => 'Brukt av skattesats', + 'User Groups' => 'Brukergrupper', + 'User not found.' => 'Bruker ikke funnet.', + 'User' => 'Bruker', + 'Uses' => 'Bruksområder', + 'Validate Business Tax ID as Vat ID' => 'Bekreft ID for virksomhetsskatt som MVA-ID', + 'Validating condition syntax' => 'Validerer tilstandssyntaks', + 'Validating formula syntax' => 'Validerer formelsyntaks', + 'Variant Fields' => 'Variantfelt', + 'Variant Has Untracked Stock' => 'Varianten har lagerbeholdning som ikke er sporet', + 'Variant Price' => 'Variantpris', + 'Variant SKU' => 'Variant-SKU', + 'Variant Search' => 'Variantsøk', + 'Variant Stock' => 'Varantlager', + 'Variant Title Format' => 'Tittelformat for varianter', + 'Variant Tracks Stock' => 'Varianten sporer lagerbeholdning', + 'Variant UI Label Format' => 'Etikettformat for grensesnitt for variant', + 'Variant has no product.' => 'Variant har ingen produkt.', + 'Variants not restored.' => 'Varianter ble ikke gjenopprettet.', + 'Variants restored.' => 'Varianter ble gjenopprettet.', + 'Variants' => 'Varianter', + 'View customer' => 'Vis kunder', + 'View order' => 'Vis ordre', + 'View product type - {productType}' => 'Vis produkttype – {productType}', + 'View user' => 'Vis bruker', + 'View' => 'Vis', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => 'Advarsel. Hvis du sletter valutaen, vil det stoppe alle betalinger og tilbakebetalinger i valutaen. Er du sikker på at du vil slette «{name}»?', + 'Web' => 'Web', + 'Webhook URL' => 'Webhook-URL', + 'Weight ({unit})' => 'Vekt ({unit})', + 'Weight Rate' => 'Vektpris', + 'Weight Unit' => 'Vektenhet', + 'Weight' => 'Vekt', + 'What product URIs should look like for the site.' => 'Hvordan produkt-URI-er skal se ut på dette nettstedet.', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Hvordan den automatisk genererte produkttittelen skal se ut. Du kan inkludere tags som gir egenskaper til de ulike produktene, slik som {ex1} eller {ex2}. Alle spesialfelt som brukes må settes til påkrevd.', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Hvordan den automatisk genererte varianttittelen skal se ut. Du kan inkludere tags som gir egenskaper til de ulike variantene, slik som {ex1} eller {ex2}. Alle spesialfelt som brukes må settes til påkrevd.', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => 'Hvordan PDF-filnavnet til ordrene skal se ut (uten utvidelse). Du kan inkludere stikkord med utgående ordreegenskaper, slik som {ex1} eller {ex2}.', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'Hvordan de unike, autogenererte SKU-ene skal se ut når et SKU-felt sendes inn uten en verdi. Du kan inkludere tags som gir egenskaper, slik som {ex1} eller {ex2}.', + 'What this PDF will be called in the control panel.' => 'Hva denne PDF-en skal hete i kontrollpanelet.', + 'What this catalog pricing rule will be called in the control panel.' => 'Hva denne prisregelen for katalog skal hete i kontrollpanelet.', + 'What this discount will be called in the control panel.' => 'Hva denne rabatten skal hete i kontrollpanelet.', + 'What this email will be called in the control panel.' => 'Hva denne e-posten skal hete i kontrollpanelet.', + 'What this product type will be called in the control panel.' => 'Hva denne produkttypen skal hete i kontrollpanelet.', + 'What this sale will be called in the control panel.' => 'Hva dette salget skal hete i kontrollpanelet.', + 'What this shipping category will be called in the control panel.' => 'Hva denne fraktkategorien skal hete i kontrollpanelet.', + 'What this shipping rule will be called in the control panel.' => 'Hva denne fraktregelen skal hete i kontrollpanelet.', + 'What this shipping zone will be called in the control panel.' => 'Hva denne fraktsonen skal hete i kontrollpanelet.', + 'What this status will be called in the control panel.' => 'Hva denne statusen skal hete i kontrollpanelet.', + 'What this subscription plan will be called in the control panel.' => 'Hva dette abonnementet skal hete i kontrollpanelet.', + 'What this tax category will be called in the control panel.' => 'Hva denne avgiftskategorien skal hete i kontrollpanelet.', + 'What this tax zone will be called in the control panel.' => 'Hva denne skattesonen skal hete i kontrollpanelet.', + 'When this discount is applied to an order, which line items should be discounted?' => 'Når denne rabatten blir brukt på en ordre, hvilke linjevarer skal få rabatt?', + 'Whether the first available shipping method option should be set automatically on carts.' => 'Om det første tilgjengelige fraktalternativet skal angis automatisk i handlekurver.', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'Om brukerens primære betalingskilde skal angis automatisk i nye handlekurver.', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'Om brukerens primære frakt- og faktureringsadresse betalingskilde skal angis automatisk i nye handlekurver.', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => 'Om denne prisregelen for katalog skal være tilgjengelig for bruk, uansett andre forhold.', + 'Whether this sale should be available for use, regardless of other conditions.' => 'Om dette salget skal være tilgjengelig for bruk, uansett andre forhold.', + 'Which data to display in the name column in the results table.' => 'Hvilken data som skal vises i kolonnen med navn i resultattabellen.', + 'Which product types should this category be available to?' => 'Hvilke produkttyper skal denne kategorien være tilgjengelig for?', + 'Which template should be loaded when a product’s URL is requested.' => 'Hvilken mal som skal lastes når en forespørsel sendes for et produkts URL.', + 'Width ({unit})' => 'Bredde ({unit})', + 'Width' => 'Bredde', + 'YYYY' => 'ÅÅÅÅ', + 'Yes' => 'Ja', + 'You are not allowed to add a line item.' => 'Du har ikke tillatelse til å legge til en linjevare.', + 'You currently have no emails configured to select for this status.' => 'Du har ikke en e-post du kan velge for denne statusen.', + 'You do not have permission to load this cart.' => 'Du har ikke tillatelse til å laste inn denne handlekurven.', + 'You must set up at least one gateway that supports subscriptions first.' => 'Du må sette opp minst en portal som støtter abonnementer først.', + 'You must be logged in or provide a valid token to load this cart.' => 'Du må være innlogget eller oppgi en gyldig nøkkel for å laste inn denne handlekurven.', + 'You must be signed in to create a payment source.' => 'Du må være innlogget for å opprette en betalingskilde.', + 'You must be signed in to set a primary payment source.' => 'Du må være innlogget for å angi en primær betalingskilde.', + 'You must make a payment to complete the order.' => 'Du må betale for å fullføre ordren.', + 'Your Cart Recovery Link' => 'Lenken din for gjenoppretting av handlekurv', + 'Your Order PDF Download Link' => 'Din nedlastingslenke for PDF-ordre', + 'Your order is empty' => 'Ordren er tom', + 'ZIP file' => 'ZIP-fil', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'Null – minimumspris er null hvis rabattene er større enn ordreverdien.', + 'Zip Code' => 'Postnummer', + 'all' => 'alle', + 'any' => 'noen', + 'average order total' => 'gjennomsnittlig ordrebeløp', + 'billing address' => 'faktureringsadresse', + 'donation' => 'donasjon', + 'donations' => 'donasjoner', + 'info' => 'info', + 'inventory location' => 'inventarsted', + 'new customers' => 'nye kunder', + 'on hand' => 'for hånden', + 'only' => 'kun', + 'order' => 'ordre', + 'orders' => 'ordre', + 'price' => 'pris', + 'prices' => 'priser', + 'product variant' => 'produktvariant', + 'product variants' => 'produktvarianter', + 'product' => 'produkt', + 'products' => 'produkter', + 'repeat customers' => 'tilbakevendende kunder', + 'shipping address' => 'fraktadresse', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'Både shippingSameAsBilling og billingSameAsShipping kan ikke settes.', + 'subscription' => 'abonnement', + 'subscriptions' => 'abonnementer', + 'to' => 'til', + 'transfer' => 'overføring', + 'transfers' => 'overføringer', + '{amount} included' => '{amount} inkludert', + '{count} Unfulfilled Orders' => '{count} ufullførte ordrer', + '{description} is no longer available.' => '{description} er ikke tilgjengelig lenger.', + '{description} only has {stock} in stock.' => '{description} har bare {stock} på lager.', + '{from} to {to}' => '{from} til {to}', + '{name} (Primary)' => '{name} (Primære)', + '{name} (Trashed)' => '{name} (forkastet)', + '{name} catalog price' => 'Katalogpris {name}', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, one {}=1{ordre} other{ordrer}} oppdatert.', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, =1{ordre er} other{ordrer er}} assosiert med {numUsers, plural, =1{bruker} other{brukere}}.', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, =1{abonnement er} other{abonnementer er}} aktivert for {numUsers, plural, =1{bruker} other{brukere}}.', + '{number} more…' => '{number} mer…', + '{pct} off the discounted item price' => '{pct} avslag på rabattert pris', + '{pct} off the original item price' => '{pct} avslag på opprinnelig pris', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, one {}=1{har} other{har}} ikke blitt tilordnet et nettsted.', + '{total} in total revenue' => '{total} i total inntekt', + '{total} orders' => '{total} ordrer', + '{total} saleable across {locationCount} location(s)' => '{total} salgbare på tvers av {locationCount} sted(er)', + '{uses} uses across {emails} email addresses' => '{uses} antall bruk for {emails} e-postadresser', + '{uses} uses across {users} users' => '{uses} antall bruk for {users} brukere', + '“{description}” is currently out of stock.' => 'Det er for øyeblikket tomt på lageret for «{description}».', + '“{key}” has invalid JSON' => '«{key}» har ugyldig JSON', +]; diff --git a/lang/nl/commerce.php b/lang/nl/commerce.php new file mode 100644 index 0000000000..4474662c23 --- /dev/null +++ b/lang/nl/commerce.php @@ -0,0 +1,1423 @@ + '(nieuwe prijs)', + '(of original price)' => '(van originele prijs)', + '(off original price)' => '(van originele prijs)', + 'A cart number must be specified.' => 'Gelieve een winkelwagennummer op te geven.', + 'A cart recovery link has been sent to {email}.' => 'Er is een link voor het herstellen van de winkelwagen verstuurd naar {email}.', + 'A cart recovery link will be sent to {email}.' => 'Er wordt een link voor het herstellen van de winkelwagen verstuurd naar {email}.', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'Er wordt een gebruiksvriendelijk referentienummer met dit formaat gegenereerd wanneer een winkelwagen is voltooid en in een bestelling wordt omgezet. Bijvoorbeeld {ex1} of
{ex2}. Het resultaat van dit formaat moet uniek zijn.', + 'A new download link has been sent to {email}' => 'Er is een nieuwe downloadlink verstuurd naar {email}', + 'A new download link will be sent to {email}' => 'Er wordt een nieuwe downloadlink verstuurd naar {email}', + 'A valid email is required to create a customer.' => 'Om een klant aan te maken, is een geldig e-mailadres nodig.', + 'Accept' => 'Accepteren', + 'Accepted' => 'Geaccepteerd', + 'Actions' => 'Acties', + 'Active Carts' => 'Actieve Winkelwagens', + 'Active subscriptions' => 'Actieve abonnementen', + 'Active' => 'Actief', + 'Add Address' => 'Adres toevoegen', + 'Add a coupon' => 'Voeg een coupon toe', + 'Add a custom line item' => 'Een aangepast lijnitem toevoegen', + 'Add a line item' => 'Lijnitem toevoegen', + 'Add a product' => 'Voeg een product toe', + 'Add a variant' => 'Voeg een variant toe', + 'Add an adjustment' => 'Aanpassing toevoegen', + 'Add an item' => 'Een item toevoegen', + 'Add an option' => 'Voeg een optie toe', + 'Add catalog price' => 'Catalogusprijs toevoegen', + 'Add' => 'Toevoegen', + 'Additional Actions' => 'Bijkomende acties', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'Bijkomende ontvangers die deze e-mail moeten ontvangen. Hier kunt u Twig-code gebruiken.', + 'Address 1' => 'Adres 1', + 'Address 2' => 'Adres 2', + 'Address 3' => 'Adres 3', + 'Address Line 1' => 'Adresregel 1', + 'Address Line 2' => 'Adresregel 2', + 'Address Updated.' => 'Adres bijgewerkt.', + 'Address copied to user.' => 'Adres gekopieerd naar gebruiker.', + 'Address not found.' => 'Adres niet gevonden.', + 'Adjust Quantity' => 'Hoeveelheid aanpassen', + 'Adjust by' => 'Aanpassen met', + 'Adjust price when included rate is disqualified?' => 'Prijs aanpassen wanneer belastingtarief onjuist is?', + 'Adjustments' => 'Aanpassingen', + 'Admin Notices' => 'Beheerderskennisgevingen', + 'Administrative Area Code of Origin' => 'Oorsprongscode administratief gebied', + 'Advanced' => 'Geavanceerd', + 'All Orders' => 'Alle bestellingen', + 'All Totals' => 'Alle totalen', + 'All Transfers' => 'Alle overdrachten', + 'All active subscriptions' => 'Alle actieve abonnementen', + 'All customers' => 'Alle klanten', + 'All products' => 'Alle producten', + 'All variants must have a SKU.' => 'Alle varianten moeten een SKU hebben.', + 'All' => 'Alle', + 'Allow Checkout Without Payment' => 'Afrekenen zonder betaling toestaan', + 'Allow Empty Cart On Checkout' => 'Lege winkelwagen bij afrekenen toestaan', + 'Allow Partial Payment On Checkout' => 'Gedeeltelijke betaling bij afrekenen toestaan', + 'Allow out of stock purchases' => 'Aankopen niet op voorraad toestaan', + 'Allow' => 'Toestaan', + 'Allowed Qty' => 'Toegestaan ​​aantal', + 'Alternative Phone' => 'Alternatief telefoonnummer', + 'Amount' => 'Aantal', + 'An ID must be provided' => 'Er moet een ID worden opgegeven', + 'An error occurred while generating this PDF.' => 'Er is een fout opgetreden bij het genereren van deze PDF.', + 'Any' => 'Ieder', + 'Anywhere' => 'Eender waar', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => 'Weet u zeker dat u het abonnementsplan “{name}” wilt archiveren? Hierdoor worden uw bestaande abonnementen NIET geannuleerd.', + 'Are you sure you want to capture this transaction?' => 'Weet u zeker dat u deze transactie wilt vastleggen?', + 'Are you sure you want to complete this order?' => 'Weet u zeker dat u deze bestelling wilt voltooien?', + 'Are you sure you want to delete the selected orders?' => 'Weet u zeker dat u de geselecteerde bestellingen wilt verwijderen?', + 'Are you sure you want to delete the selected product and its variants?' => 'Weet u zeker dat u het geselecteerde product en de varianten wilt verwijderen?', + 'Are you sure you want to delete this shipping rule?' => 'Weet u zeker dat u deze verzendingsregel wilt verwijderen?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => 'Weet u zeker dat u “{name}” wilt verwijderen en al haar producten? Zorg ervoor dat u een back-up van uw database heeft voordat u deze destructieve actie uitvoert.', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => 'Weet u zeker dat u “{name}” wilt verwijderen? Dit zal alle lijnitems met deze status resetten naar geen status.', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'Weet u zeker dat u deze overdracht als in afwachting wilt markeren? Deze wordt als inkomend weergegeven op de bestemming.', + 'Are you sure you want to overwrite the billing address?' => 'Weet u zeker dat u het factuuradres wilt overschrijven?', + 'Are you sure you want to overwrite the shipping address?' => 'Weet u zeker dat u het verzendadres wilt overschrijven?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'Weet u zeker dat u deze winkel en alles erin permanent wilt verwijderen?', + 'Are you sure you want to refund this transaction?' => 'Weet u zeker dat u deze transactie wilt terugbetalen?', + 'Are you sure you want to remove this customer?' => 'Weet u zeker dat u deze klant wilt verwijderen?', + 'Are you sure you want to save this as a new shipping rule?' => 'Weet u zeker dat u deze nieuwe verzendingsregel wilt opslaan?', + 'Are you sure you want to send email: {name}?' => 'Weet u zeker dat de e-mail: {name} wilt verzenden?', + 'At least one site must be enabled for the product type.' => 'Er moet minimaal één site zijn ingeschakeld voor het producttype.', + 'Attempted Payments' => 'Betaalpogingen', + 'Attention' => 'Ter attentie van', + 'Authorize Only (Manually Capture)' => 'Alleen autoriseren (Handmatig registreren)', + 'Auto Set Cart Shipping Method Option' => 'Verzendmethodeoptie winkelwagen automatisch instellen', + 'Auto Set New Cart Addresses' => 'Nieuw winkelwagenadres automatisch instellen', + 'Auto Set Payment Source' => 'Betaalbron automatisch instellen', + 'Automatic SKU Format' => 'Automatisch Artikelnummer Formaat', + 'Available Shipping Categories' => 'Beschikbare verzendcategorieën', + 'Available Tax Categories' => 'Beschikbare belastingcategorieën', + 'Available for purchase' => 'Beschikbaar voor aankoop', + 'Available for purchase?' => 'Beschikbaar voor aankoop?', + 'Available inventory for "{description}" has gone below zero.' => 'De beschikbare voorraad voor "{description}" is lager dan nul.', + 'Available to Product Types' => 'Beschikbaar voor producttypen', + 'Available' => 'Beschikbaar', + 'Available?' => 'Beschikbaar?', + 'Average Order Total' => 'Gemiddelde totaalprijs bestellingen', + 'Average' => 'Gemiddelde', + 'BCC’d Recipient' => 'BCC’de ontvanger', + 'Bad Request' => 'Foutieve aanvraag', + 'Bad address ID.' => 'Onjuiste adres-ID.', + 'Bad order ID.' => 'Verkeerde bestelling-ID.', + 'Base Price' => 'Basisprijs', + 'Base Promotional Price' => 'Promotiebasisprijs', + 'Base Rate' => 'Basistarief', + 'Base' => 'Basis', + 'Bcc' => 'Bcc', + 'Billing Address' => 'Factuuradres', + 'Billing Business Name' => 'Bedrijfsnaam voor facturering', + 'Billing First Name' => 'Voornaam voor facturering', + 'Billing Full Name' => 'Volledige naam voor facturering', + 'Billing Last Name' => 'Achternaam voor facturering', + 'Billing address required.' => 'Factuuradres verplicht.', + 'Billing detail update URL' => 'URL om factuurgegevens bij te werken', + 'Billing issues' => 'Factureringsprobleem', + 'Billing' => 'Facturering', + 'Both (Line item price + Line item shipping costs)' => 'Beide (prijs regelartikel + verzendkosten regelartikel)', + 'Business ID' => 'Bedrijfs-id', + 'Business Name' => 'Bedrijfsnaam', + 'Business Tax ID' => 'BTW nummer', + 'CC’d Recipient' => 'Ontvanger in cc', + 'CVV' => 'CVC', + 'Can be used as an internal reference.' => 'Kan worden gebruikt als interne referentie.', + 'Can not complete payment for missing transaction.' => 'Betaling voor ontbrekende transactie voltooien niet mogelijk.', + 'Can not create a new order' => 'Nieuwe bestelling aanmaken niet mogelijk', + 'Can not find an order to pay.' => 'Geen bestelling gevonden om te betalen.', + 'Can not find enabled email.' => 'Kan ingeschakeld e-mail niet vinden.', + 'Can not find order' => 'Bestelling niet gevonden', + 'Can not find order.' => 'Bestelling niet gevonden.', + 'Can not find the transaction to refund' => 'Terug te betalen transactie onvindbaar', + 'Can not move between these inventory types.' => 'Kan niet verplaatsen tussen deze voorraadtypen.', + 'Can not refund amount greater than the remaining amount' => 'Het is niet mogelijk om een bedrag terug te betalen dat hoger is dan het resterend bedrag', + 'Cancel subscription' => 'Abonnement annuleren', + 'Cancel with gateway now' => 'Nu annuleren met gateway', + 'Cancel' => 'Annuleer', + 'Cancellation date' => 'Annuleringsdatum', + 'Cancellation' => 'Annulering', + 'Cannot switch plans for this subscription.' => 'Kan niet overstappen op een ander plan voor dit abonnement.', + 'Can’t preview this email.' => 'Er is geen voorbeeldweergave van deze e-mail beschikbaar.', + 'Capture payment' => 'Betaling registreren', + 'Capture' => 'Vastleggen', + 'Card Holder' => 'Kaarthouder', + 'Card Number' => 'Kaartnummer', + 'Card' => 'Kaart', + 'Cart Recovery Link' => 'Link voor het herstellen van de winkelwagen', + 'Cart forgotten.' => 'Winkelwagen vergeten.', + 'Cart updated.' => 'Winkelwagen bijgewerkt.', + 'Cart {number}' => 'Winkelwagen {number}', + 'Catalog Pricing Rule' => 'Catalogusprijsregel', + 'Catalog pricing rule description.' => 'Beschrijving van catalogusprijsregel.', + 'Catalog pricing rule saved.' => 'Catalogusprijsregel opgeslagen.', + 'Catalog pricing rules deleted.' => 'Catalogusprijsregels verwijderd.', + 'Catalog pricing rules updated.' => 'Catalogusprijsregels bijgewerkt.', + 'Categories Relationship Type' => 'Relatietype categorieën', + 'Categories' => 'Categorieën', + 'Category Rate Overrides' => 'Categorietarief overschrijft', + 'Centimeters (cm)' => 'Centimeter (cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'Het wijzigen van deze waarde kan gevolgen hebben voor de mogelijkheid om bestaande transacties terug te betalen.', + 'Choose a color to represent the order’s status' => 'Kies een kleur om de status van de bestelling weer te geven', + 'Choose a new customer' => 'Kies een nieuwe klant', + 'Choose adjustment values to include when calculating the product revenue total.' => 'Kies de te gebruiken aanpasswingswaarden bij het berekenen van de totale omzet van het product.', + 'Choose the currency’s ISO code.' => 'Kies de ISO code van de valuta.', + 'Choose the destination inventory location for the existing on hand stock.' => 'Kies de bestemmingsvoorraadlocatie voor de bestaande aanwezige voorraad.', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'Kies op welke sites dit producttype beschikbaar moet zijn en configureer de sitespecifieke instellingen.', + 'City' => 'Plaats', + 'Clear counter' => 'Teller op nul zetten', + 'Clear notices' => 'Kennisgevingen wissen', + 'Close' => 'Sluiten', + 'Code' => 'Code', + 'Collated PDF' => 'Samengevoegde PDF', + 'Color' => 'Kleur', + 'Commerce Products' => 'Commerce-producten', + 'Commerce Settings' => 'Commerce instellingen', + 'Commerce Variants' => 'Commerce-varianten', + 'Commerce email “{email}” could not be sent for order “{order}”.' => 'Commerce-e-mail “{email}” kan niet worden verzonden voor bestelling “{order}”.', + 'Commerce order exports' => 'Exports van commerce-bestellingen', + 'Commerce' => 'Commerce', + 'Committed' => 'Toegezegde voorraad', + 'Completed Email' => 'Ingevuld e-mailadres', + 'Completed' => 'Voltooid', + 'Completing order failed.' => 'Uitvoering bestelling mislukt.', + 'Condition' => 'Conditie', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'Voorwaarden worden hier vergeleken met een bestelling voordat de regels worden bekeken. Dit is handig als u de beschikbaarheid van een methode vroegtijdig wilt kwalificeren of als er gemeenschappelijke voorwaarden zijn voor alle regels voor deze methode.', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'Voorwaarden hier worden vergeleken met de klant van de bestelling voordat de regels worden bekeken. Dit is handig als u de beschikbaarheid van een methode vroegtijdig wilt kwalificeren of als er gemeenschappelijke voorwaarden zijn voor alle regels voor deze methode.', + 'Conditions' => 'Voorwaarden', + 'Contains Purchasables' => 'Bevat koopbare artikelen', + 'Control Panel Settings' => 'Instellingen configuratiescherm', + 'Control panel' => 'Configuratiescherm', + 'Conversion Rate' => 'Conversietarief', + 'Converted Price' => 'Omgezette prijs', + 'Copied!' => 'Gekopieerd!', + 'Copy the URL' => 'Kopieer de URL', + 'Copy to {location}' => 'Kopiëren naar {location}', + 'Copy' => 'Kopiëren', + 'Costs' => 'Kosten', + 'Could not archive gateway.' => 'Gateway archiveren niet mogelijk.', + 'Could not cancel “{reference}”.' => 'Kan niet annuleren “{reference}”.', + 'Could not create the payment source.' => 'Betaalbron aanmaken niet mogelijk.', + 'Could not delete shipping rule' => 'Verzendingsregel verwijderen niet mogelijk', + 'Could not delete shipping zone' => 'Verzendingszone verwijderen niet mogelijk', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => 'Kan {count, number} verzend{count, plural, one{categorie} other{categorieën}} niet verwijderen.', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => 'Kan {count, number} verzend{count, plural, one{methode} other{methoden}} en regels niet verwijderen.', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => 'Kan {count, number} belasting{count, plural, one{categorie} other{categorieën}} niet verwijderen.', + 'Could not find the email or template.' => 'E-mail of sjabloon niet gevonden.', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => 'Bestelling {number} kan niet als voltooid worden gemarkeerd. Opslaan bestelling mislukt vanwege fouten tijdens het voltooien van de bestelling: {order}', + 'Could not reactivate “{reference}”.' => 'Kan niet opnieuw activeren “{reference}”.', + 'Could not send email' => 'E-mail verzenden niet mogelijk', + 'Could not switch “{reference}” to “{plan}”.' => 'Kan “{reference}” niet omschakelen naar “{plan}”.', + 'Could not update orders address.' => 'Bijwerken adres bestelling niet mogelijk.', + 'Couldn’t archive Line Item Status.' => 'Status regelartikel archiveren niet mogelijk.', + 'Couldn’t archive Order Status.' => 'Status bestelling archiveren niet mogelijk.', + 'Couldn’t capture transaction.' => 'Transactie registreren niet mogelijk.', + 'Couldn’t capture transaction: {message}' => 'Transactie registreren niet mogelijk: {message}', + 'Couldn’t delete email.' => 'Kon e-mailadres niet verwijderen.', + 'Couldn’t delete the payment source.' => 'Betaalbron verwijderen niet mogelijk.', + 'Couldn’t get order.' => 'Bestelling ophalen lukt niet.', + 'Couldn’t recalculate order.' => 'Bestelling herberekenen was niet mogelijk.', + 'Couldn’t refund transaction.' => 'Transactie terugbetalen niet mogelijk.', + 'Couldn’t refund transaction: {message}' => 'Transactie terugbetalen niet mogelijk: {message}', + 'Couldn’t reorder Line Item Statuses.' => 'Regelartikelstatussen herschikken niet mogelijk.', + 'Couldn’t reorder Order Statuses.' => 'Bestellingsstatussen herschikken niet mogelijk.', + 'Couldn’t reorder PDFs.' => 'PDF\'s herschikken niet mogelijk.', + 'Couldn’t reorder discounts.' => 'Kan kortingen niet opnieuw rangschikken.', + 'Couldn’t reorder gateways.' => 'Kan gateways niet opnieuw bestellen.', + 'Couldn’t reorder plans.' => 'Kan plannen niet opnieuw rangschikken.', + 'Couldn’t reorder rules.' => 'Regels herschikken niet mogelijk.', + 'Couldn’t reorder sale.' => 'Aanbieding herschikken lukt niet.', + 'Couldn’t reorder sales.' => 'Aanbiedingen herschikken niet mogelijk.', + 'Couldn’t reorder statuses.' => 'De statussen herschikken was niet mogelijk.', + 'Couldn’t reorder stores.' => 'Kon winkels niet herordenen.', + 'Couldn’t save PDF.' => 'PDF opslaan niet mogelijk.', + 'Couldn’t save catalog pricing rule.' => 'Kon catalogusprijsregel niet opslaan.', + 'Couldn’t save currency.' => 'Valuta opslaan niet mogelijk.', + 'Couldn’t save discount.' => 'Korting opslaan niet mogelijk.', + 'Couldn’t save email.' => 'E-mail opslaan niet mogelijk.', + 'Couldn’t save gateway.' => 'Gateway opslaan niet mogelijk.', + 'Couldn’t save inventory location.' => 'Kon voorraadlocatie niet opslaan.', + 'Couldn’t save line item status.' => 'Status regelartikel opslaan niet mogelijk.', + 'Couldn’t save order fields.' => 'Kon bestellingsvelden niet opslaan.', + 'Couldn’t save order status.' => 'Status bestelling opslaan niet mogelijk.', + 'Couldn’t save order.' => 'Bestelling opslaan niet mogelijk.', + 'Couldn’t save product type.' => 'Producttype opslaan niet mogelijk.', + 'Couldn’t save sale.' => 'Aanbieding opslaan niet mogelijk.', + 'Couldn’t save settings.' => 'Instellingen opslaan niet mogelijk.', + 'Couldn’t save shipping category.' => 'Verzendcategorie opslaan niet mogelijk.', + 'Couldn’t save shipping method.' => 'Verzendmethode opslaan niet mogelijk.', + 'Couldn’t save shipping rule.' => 'Verzendingsregel opslaan niet mogelijk.', + 'Couldn’t save shipping zone.' => 'Verzendingszone opslaan niet mogelijk.', + 'Couldn’t save store.' => 'Kon winkel niet opslaan.', + 'Couldn’t save subscription fields.' => 'Kon abonnementsvelden niet opslaan.', + 'Couldn’t save subscription plan.' => 'Abonnementsplan opslaan niet mogelijk.', + 'Couldn’t save subscription.' => 'Abonnement opslaan niet mogelijk.', + 'Couldn’t save tax category.' => 'Belastingcategorie opslaan niet mogelijk.', + 'Couldn’t save tax rate.' => 'Belastingtarief opslaan niet mogelijk.', + 'Couldn’t save tax zone.' => 'Belastingzone opslaan niet mogelijk.', + 'Couldn’t save transfer fields.' => 'Kan overdrachtsvelden niet opslaan.', + 'Couldn’t update catalog pricing rule statuses.' => 'Kon status catalogusprijsregel niet bijwerken.', + 'Couldn’t update status.' => 'Kan status niet bijwerken.', + 'Couldn’t updated sales status.' => 'Status aanbieding bijwerken niet mogelijk.', + 'Country Code of Origin' => 'Oorsprongscode land', + 'Country List' => 'Landenlijst', + 'Country not allowed.' => 'Land niet toegestaan.', + 'Country' => 'Land', + 'Coupon Code' => 'Kortingscode', + 'Coupon can not apply discount to this order due to address mismatch.' => 'Met deze coupon kan geen korting worden toegepast op deze bestelling omdat het adres niet overeenkomt.', + 'Coupon can not apply discount to this order due to customer mismatch.' => 'Met deze coupon kan geen korting worden toegepast op deze bestelling omdat de klant niet overeenkomt.', + 'Coupon can not apply discount to this order.' => 'Met deze coupon kan geen korting worden toegepast op deze bestelling.', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'Couponcode "{code}" wordt al gebruikt door korting "{name}".', + 'Coupon codes cannot be blank.' => 'Couponcodes mogen niet leeg zijn.', + 'Coupon codes must be unique.' => 'Couponcodes moeten uniek zijn.', + 'Coupon format is required and must contain at least one `#`.' => 'Couponnotatie is vereist en moet minimaal één \'#\' bevatten.', + 'Coupon not valid.' => 'Ongeldige coupon.', + 'Coupon removed: {explanation}' => 'Coupon verwijderd: {explanation}', + 'Coupons' => 'Coupons', + 'Craft Commerce - Administration' => 'Craft Commerce - Administratie', + 'Craft Commerce - Inventory' => 'Craft Commerce - Voorraad', + 'Craft Commerce - Orders' => 'Craft Commerce - Bestellingen', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce - Producttype - {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce - Abonnementen', + 'Create a Discount' => 'Maak een korting aan', + 'Create a Subscription Plan' => 'Een abonnementsplan aanmaken', + 'Create a new PDF' => 'Maak een nieuw PDF-bestand aan', + 'Create a new catalog pricing rule' => 'Maak een nieuwe catalogusprijsregel', + 'Create a new currency' => 'Maak nieuwe valuta aan', + 'Create a new email' => 'Maak een nieuw e-mailadres aan', + 'Create a new gateway' => 'Een nieuwe gateway aanmaken', + 'Create a new line item status' => 'Maak een regelartikelstatus aan', + 'Create a new order status' => 'Maak een bestellingstatus aan', + 'Create a new product type' => 'Maak een nieuw producttype', + 'Create a new sale' => 'Maak een nieuwe aanbieding aan', + 'Create a new shipping category' => 'Maak een nieuwe verzendcategorie aan', + 'Create a new shipping method' => 'Maak een nieuwe verzendmethode aan', + 'Create a new shipping rule' => 'Maak een nieuwe verzendingsregel', + 'Create a new tax category' => 'Maak een nieuwe fiscale categorie aan', + 'Create a new tax rate' => 'Maak een nieuw belastingtarief aan', + 'Create a product type' => 'Maak een producttype aan', + 'Create a shipping zone' => 'Maak een verzendingszone aan', + 'Create a tax zone' => 'Maak een belastingzone aan', + 'Create catalog pricing rules' => 'Catalogusprijsregels maken', + 'Create customer: “{email}”' => 'Klant aanmaken: “{email}”', + 'Create discounts' => 'Kortingen aanmaken', + 'Create discount…' => 'Korting aanmaken ...', + 'Create rules that allow this discount to match the order.' => 'Maak regels waardoor deze korting bij de bestelling past.', + 'Create rules that allow this discount to match the order’s billing address.' => 'Maak regels waardoor deze korting bij het factuuradres van de bestelling past.', + 'Create rules that allow this discount to match the order’s customer.' => 'Maak regels waardoor deze korting bij de klant van de bestelling past.', + 'Create rules that allow this discount to match the order’s shipping address.' => 'Maak regels waardoor deze korting bij het verzendadres van de bestelling past.', + 'Create rules that allow this gateway to match the billing address.' => 'Maak regels waardoor deze gateway bij het factuuradres past.', + 'Create rules that allow this gateway to match the order.' => 'Maak regels waardoor deze gateway overeenkomt met de bestelling.', + 'Create rules that allow this gateway to match the shipping address.' => 'Maak regels waardoor deze gateway bij het verzendadres past.', + 'Create sales' => 'Verkopen aanmaken', + 'Create sale…' => 'Aanbieding aanmaken ...', + 'Created' => 'Gemaakt', + 'Credit Card Payment Type' => 'Creditcard betalingstype', + 'Currency Code' => 'Valutacode', + 'Currency saved.' => 'Valuta opgeslagen.', + 'Currency' => 'Muntsoort', + 'Current' => 'Huidige', + 'Custom 1' => 'Aangepast 1', + 'Custom 2' => 'Aangepast 2', + 'Custom 3' => 'Aangepast 3', + 'Custom 4' => 'Aangepast 4', + 'Custom' => 'Aangepast', + 'Customer Enabled?' => 'Klant ingeschakeld?', + 'Customer ID is required.' => 'Klant-ID is verplicht.', + 'Customer Note' => 'Notitie van klant', + 'Customer Notices' => 'Kennisgevingen aan klanten', + 'Customer data' => 'Klantgegevens', + 'Customer' => 'Klant', + 'Damaged' => 'Beschadigd', + 'Data shown might be outdated.' => 'De weergegeven gegevens zijn mogelijk verouderd.', + 'Date Authorized' => 'Datum geautoriseerd', + 'Date Created' => 'Datum aangemaakt', + 'Date First Paid' => 'Datum eerste betaling', + 'Date Ordered' => 'Datum besteld', + 'Date Paid' => 'Datum van betaling', + 'Date Updated' => 'Datum van update', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'Datum vanaf wanneer de catalogusprijsregel actief zal zijn. Laat leeg voor onbeperkte startdatum', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'Datum vanaf wanneer de korting actief zal zijn. Laat leeg voor onbeperkte startdatum', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'Datum vanaf wanneer de verkoop actief zal zijn. Laat leeg voor onbeperkte startdatum', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'Datum waarop de catalogusprijsregel zal stoppen. Laat leeg voor onbeperkte einddatum', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'Datum waarop de korting zal stoppen. Laat leeg voor onbeperkte einddatum', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'Datum waarop de verkoop zal stoppen. Laat leeg voor onbeperkte einddatum', + 'Date' => 'Datum', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'Standaard - de prijs mag negatief zijn als kortingen hoger zijn dan de bestelwaarde.', + 'Default Category' => 'Standaardcategorie', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'De standaard weergave van het Commerce-configuratiescherm. Als de gebruiker geen rechten heeft, wordt een voor de gebruiker toegankelijke locatie gebruikt.', + 'Default Order PDF' => 'Standaard bestel-pdf', + 'Default Per Item Rate' => 'Standaardkost per item', + 'Default Percentage Rate' => 'Standaardpercentage', + 'Default Status?' => 'Standaard status?', + 'Default View' => 'Standaardweergave', + 'Default Weight Rate' => 'Standaard gewichttarief', + 'Default Zone' => 'Standaard zone', + 'Default status?' => 'Standaardstatus?', + 'Default to this tax zone when no billing address is set' => 'Stel standaard deze belastingzone in als er geen factuuradres is ingesteld', + 'Default to this tax zone when no shipping address is set' => 'Standaard BTW zone met dit verzendadres is ingesteld', + 'Default variant updated.' => 'Standaardvariant bijgewerkt.', + 'Default' => 'Standaard', + 'Default?' => 'Standaard?', + 'Delete catalog pricing rules' => 'Catalogusprijsregels verwijderen', + 'Delete discounts' => 'Kortingen verwijderen', + 'Delete orders' => 'Bestellingen verwijderen', + 'Delete sales' => 'Verkopen verwijderen', + 'Delete' => 'Verwijder', + 'Deleting the {location} location.' => 'Verwijder de locatie {location}.', + 'Describe this rule.' => 'Beschrijf deze regel.', + 'Describe this shipping zone.' => 'Geef een beschrijving voor de verzendingszone', + 'Describe this tax zone.' => 'Beschrijf deze fiscale zone.', + 'Description' => 'Beschrijving', + 'Destination Inventory Location' => 'Bestemmingsvoorraadlocatie', + 'Destination' => 'Bestemming', + 'Details' => 'Details', + 'Dimension Unit' => 'Afmetingen eenheid', + 'Dimensions' => 'Afmeting', + 'Disabled' => 'Uitgeschakeld', + 'Disallow' => 'Niet toestaan', + 'Discount all line items' => 'Korting toepassen op alle regelartikelen', + 'Discount description.' => 'Kortingsbeschrijving.', + 'Discount is not allowed for the order' => 'Korting is niet toegestaan voor de bestelling', + 'Discount is out of date.' => 'De korting is verouderd.', + 'Discount saved.' => 'Korting opgeslagen.', + 'Discount the matching items only' => 'Korting alleen toepassen op overeenstemmende artikelen', + 'Discount use has reached its limit.' => 'De limiet voor het kortinggebruik is bereikt.', + 'Discount' => 'Korting', + 'Discounted Item Subtotal' => 'Subtotaal kortingsartikel', + 'Discounted Items' => 'Artikelen met korting', + 'Discounts deleted.' => 'Kortingen verwijderd.', + 'Discounts reordered.' => 'Kortingen herschikt.', + 'Discounts updated.' => 'Kortingen bijgewerkt.', + 'Discounts' => 'Kortingen', + 'Disqualify with valid business tax ID?' => 'Diskwalificeren met geldig btw-nummer?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'Pas geen opeenvolgende overeenkomende verkopen toe na het toepassen van deze verkoop.', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => 'Pas dit tarief niet toe als het besteladres een of meer van de geselecteerde geldige btw-nummers bevat.', + 'Do not attach a PDF to this email' => 'Voeg geen PDF toe in bijlage bij deze e-mail', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'Geen herberekening vragen voor bestelling (Nummer: {orderNumber}) als er fouten aanwezig zijn.', + 'Donation can not be zero.' => 'Een donatie mag niet gelijk zijn aan nul.', + 'Donation needs to be an amount.' => 'De donatie moet een bedrag zijn.', + 'Donation settings saved.' => 'Donatie-instellingen opgeslagen.', + 'Donation' => 'Donatie', + 'Donations' => 'Donaties', + 'Done' => 'Klaar', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'Geen verdere kortingen toepassen voor een bestelling als deze korting wordt toegepast', + 'Download PDF' => 'PDF downloaden', + 'Download PDF…' => 'PDF downloaden…', + 'Download Type' => 'Downloadtype', + 'Download' => 'Downloaden', + 'Draft' => 'Concept', + 'Dummy gateway payment failed.' => 'Dummygatewaybetaling mislukt.', + 'Duplicate options exist' => 'Er zijn dubbele opties', + 'Duration' => 'Duur', + 'EU VAT ID' => 'EU-btw-nummer', + 'Edit address' => 'Adres bewerken', + 'Edit adjustments' => 'Aanpassingen bewerken', + 'Edit catalog pricing rules' => 'Catalogusprijsregels bewerken', + 'Edit discounts' => 'Kortingen bewerken', + 'Edit options' => 'Opties bewerken', + 'Edit orders' => 'Bestellingen bewerken', + 'Edit sales' => 'Verkopen bewerken', + 'Edit' => 'Bewerken', + 'Effect' => 'Effect', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'Eender (standaard) - Het relatieveld bevindt zich op het koopbare artikel of de categorie', + 'Either way' => 'Allebei', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'Fout bij genereren van e-mail-PDF voor e-mail “{email}”. Bestelling: “{order}”. PDF-sjabloonfout: “{message}” {file}:{line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'PDF-sjabloon voor e-mail bestaat niet in “{templatePath}” voor e-mail “{email}”. Bestelling: “{order}”.', + 'Email Subject' => 'E-mail onderwerp', + 'Email error. No email address found for order. Order: “{order}”' => 'E-mailfout. Geen e-mailadres gevonden voor bestelling. Bestelling: "{order}"', + 'Email is not enabled.' => 'E-mail is niet ingeschakeld.', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'E-mailsjabloon platte tekst bestaat niet in “{templatePath}”. Dit heeft geresulteerd in “{templateParsedPath}” voor e-mail “{email}”. Bestelling: “{order}”.', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parseerfout in platte tekst e-mailsjabloon voor e-mail “{email}”. Bestelling: “{order}”. Sjabloonfout: “{message}” {file}:{line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parseerfout in platte tekst e-mailsjabloonpad voor e-mail “{email}” in “Sjabloonpad:”. Bestelling: “{order}”. Sjabloonfout: “{message}” {file}:{line}', + 'Email required to make payments on a completed order.' => 'Het e-mailadres is verplicht voor betaling van een voltooide bestelling.', + 'Email saved.' => 'E-mail opgeslagen.', + 'Email sent' => 'E-mail verzonden', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'De e-mailsjabloon bestaat niet in “{templatePath}”. Dit heeft geresulteerd in “{templateParsedPath}” voor e-mail “{email}”. Bestelling: “{order}”.', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parseerfout in e-mailsjabloon voor aangepaste e-mail “{email}” in “Aan:”. Bestelling: “{order}”. Sjabloonfout: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parseerfout in e-mailsjabloon voor e-mail “{email}” in “Bcc:”. Bestelling: “{order}”. Sjabloonfout: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parseerfout in e-mailsjabloon voor e-mail “{email}” in “Cc:”. Bestelling: “{order}”. Sjabloonfout: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parseerfout in e-mailsjabloon voor e-mail “{email}” in “Antwoorden aan:”. Bestelling: “{order}”. Sjabloonfout: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parseerfout in e-mailsjabloon voor e-mail “{email}” in “Onderwerp:”. Bestelling: “{order}”. Sjabloonfout: “{message}” {file}:{line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parseerfout in e-mailsjabloon voor e-mail “{email}”. Bestelling: “{order}”. Sjabloonfout: “{message}” {file}:{line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Parseerfout in e-mailsjabloonpad voor e-mail “{email}” in “Sjabloonpad:”. Bestelling: “{order}”. Sjabloonfout: “{message}” {file}:{line}', + 'Email unavailable.' => 'E-mailadres niet beschikbaar.', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => 'E-mail “{email}” kon niet worden verzonden voor bestelling “{order}”. Fout: {error} {file}:{line}', + 'Email “{email}” for order {order} was cancelled.' => 'E-mail "{email}" voor bestelling "{order}" is geannuleerd.', + 'Email' => 'E-mail', + 'Emails' => 'E-mails', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'Schakel dit in als dit tarief moet worden opgenomen in de belastbare prijs in plaats van het toevoegen van een kostenpost aan de bestelling.', + 'Enable structure for products of this type' => 'Structuur inschakelen voor producten van dit type', + 'Enable this discount' => 'Schakel deze korting in', + 'Enable this rule' => 'Schakel deze regel in', + 'Enable this sale' => 'Schakel deze korting in', + 'Enable this shipping method on the front end' => 'Activeer deze verzendmethode aan de voorkant', + 'Enable this shipping rule' => 'Deze verzending regel inschakelen', + 'Enable this tax rate' => 'Schakel dit belastingtarief in', + 'Enabled for customers to select during checkout?' => 'Ingeschakeld voor klanten om te selecteren tijdens het afrekenen?', + 'Enabled for customers to select?' => 'Ingeschakeld voor selectie door klanten?', + 'Enabled' => 'Ingeschakeld', + 'Enabled?' => 'Ingeschakeld?', + 'End Date' => 'Einddatum', + 'Enter SKU' => 'Voer Artikelnummer in', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'Voeg een mensvriendelijke naam in voor dit belastingtarief voor gebruik in het configuratiescherm.', + 'Enter a percentage like {ex1} or {ex2}.' => 'Voer een percentage in, bijvoorbeeld {ex1} of {ex2}.', + 'Enter coupon code' => 'Couponcode invoeren', + 'Enter reference' => 'Referentie invoeren', + 'Error refunding transaction: {transactionHash}' => 'Fout bij terugbetaling transactie: {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'Elke nieuwe winkel moet aan minimaal één site worden toegewezen.', + 'Everywhere' => 'Overal', + 'Example' => 'Voorbeeld', + 'Exclude this discount for products that are already on promotion' => 'Sluit deze korting uit voor producten die al in de promotie zijn', + 'Expired Link' => 'Link verlopen', + 'Expired' => 'Verlopen', + 'Expiry Date' => 'Houdbaarheidsdatum', + 'Expiry date' => 'Vervaldatum', + 'Expiry' => 'Verloop', + 'Failed to receive transfer: {error}' => 'Overdracht ontvangen mislukt: {error}', + 'Failed to send email. Please try again.' => 'E-mail versturen mislukt. Probeer het opnieuw.', + 'Failed to start' => 'Start mislukt', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => 'Bijwerken van {num, plural, =1{bestelstatus} other{bestelstatussen}} mislukt.', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => 'Bijwerken van bestelstatus mislukt voor {num, plural, =1{bestelling} other{bestellingen}}.', + 'Feet (ft)' => 'Voet (ft)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'Aan het filteren op voorwaarden die beschrijven op welke bestelling deze regel van toepassing is. Voer 0 in om een voorwaarde over te slaan.', + 'First Name' => 'Voornaam', + 'Flat Amount Off Order' => 'Vast kortingbedrag voor bestelling', + 'Flat Order Discount Amount Off' => 'Afgetrokken vast kortingbedrag bestelling', + 'Free Order Payment Strategy' => 'Betaalstrategie gratis bestelling', + 'Free Shipping' => 'Gratis verzending', + 'Free orders are processed by the payment gateway' => 'Gratis bestellingen worden verwerkt door de betalingsgateway', + 'Free orders complete immediately' => 'Gratis bestellingen worden onmiddellijk uitgevoerd', + 'Free shipping can only be for whole order or matching items, not both.' => 'Gratis verzending is alleen van toepassing voor de hele bestelling of overeenstemmende artikelen, niet voor beide.', + 'From Name' => 'Van naam', + 'Fulfill' => 'Vervullen', + 'Fulfilled' => 'Vervuld', + 'Fulfillment' => 'Vervulling', + 'Full Name' => 'Volledige naam', + 'Gateway Code' => 'Gatewaycode', + 'Gateway Message' => 'Gatewaybericht', + 'Gateway Reference' => 'Gatewayreferentie', + 'Gateway Response' => 'Antwoord van de gateway', + 'Gateway doesn’t support authorize' => 'De gateway ondersteunt geen autorisatie', + 'Gateway doesn’t support partial refunds.' => 'De gateway ondersteunt geen gedeeltelijke terugbetalingen.', + 'Gateway doesn’t support purchase' => 'De gateway ondersteunt geen aankoop', + 'Gateway doesn’t support refunds.' => 'De gateway ondersteunt geen terugbetalingen.', + 'Gateway saved.' => 'Gateway opgeslagen.', + 'Gateway' => 'Gateway', + 'Gateways reordered.' => 'Gateways herschikt.', + 'Gateways' => 'Gateways', + 'General Settings' => 'Algemene instellingen', + 'General' => 'Algemeen', + 'Generate' => 'Genereren', + 'Generated Coupon Format' => 'Couponnotatie gegenereerd', + 'Grams (g)' => 'Gram (g)', + 'Groups for which this sale will be applicable to.' => 'Groepen waarop deze verkoop van toepassing is.', + 'HTML Email Template Path' => 'HTML e-mail sjabloonpad', + 'Handle' => 'Ingang', + 'Harmonized System Code' => 'Geharmoniseerde systeemcode', + 'Has Admin Notices' => 'Heeft beheerderskennisgevingen', + 'Has Emails?' => 'Heeft e-mails?', + 'Has Free Shipping' => 'Heeft gratis verzending', + 'Has Orders' => 'Heeft bestellingen', + 'Has Purchasable' => 'Heeft koopbare', + 'Has Variants?' => 'Heeft varianten?', + 'Height ({unit})' => 'Hoogte ({unit})', + 'Height' => 'Hoogte', + 'Hide snapshot' => 'Snapshot verbergen', + 'History' => 'Geschiedenis', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'De tijd (in seconden) die een pdf-downloadlink geldig moet blijven voordat hij verloopt. Standaard is dit 86.400 (24 uur).', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => 'Hoe vaak één e-mailadres is toegestaan om deze korting te gebruiken. Dit geldt voor alle voorgaande bestellingen, voor zowel gast als gebruiker. Voor een nul in voor onbeperkt gebruik door gasten en gebruikers.', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => 'Hoe vaak een gebruiker deze korting mag gebruiken. Als dit is ingesteld op iets anders dan nul, is de korting alleen beschikbaar voor aangemelde gebruikers.', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'Hoe vaak deze korting in totaal kan worden gebruikt door gasten of aangemelde gebruikers. Voer een nul in voor onbeperkt gebruik.', + 'How products should be labeled within the control panel.' => 'Hoe producten op het configuratiescherm gelabeld moeten worden.', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'De wijze waarop de aankopen en categorieën met elkaar gerelateerd zijn. Dit bepaalt de overeenstemmende items. Zie [Relatieterminologie]({link}).', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'Hoe dit product wordt omschreven bij een lijnitem in een order. Je kunt tags met eigenschappen toevoegen, zoals {ex1} of {ex2}.', + 'How this shipping method will be referred to in templates and forms.' => 'Hoe naar deze verzendmethode in sjablonen en formulieren wordt verwezen.', + 'How variants should be labeled within the control panel.' => 'Hoe varianten op het configuratiescherm gelabeld moeten worden.', + 'How you’ll refer to this PDF in the templates.' => 'Hoe u naar deze pdf verwijst in de sjablonen.', + 'How you’ll refer to this product type in the templates.' => 'Hoe u zult verwijzen naar dit type product in de templates.', + 'How you’ll refer to this shipping category in the templates.' => 'Hoe deze verzendcategorie wordt genoemd in de sjablonen.', + 'How you’ll refer to this status in the templates.' => 'Hoe zult u verwijzen naar deze status in de templates.', + 'How you’ll refer to this subscription plan in the templates.' => 'Manier waarop u in sjablonen naar dit abonnementsplan verwijst.', + 'How you’ll refer to this tax category in the templates.' => 'Hoe zult u verwijzen naar deze fiscale categorie in de sjablonen.', + 'ID' => 'ID', + 'IP Address' => 'IP-adres', + 'If disabled, this PDF will not be available or sent with emails.' => 'Indien dit niet is geselecteerd, zal deze pdf niet beschikbaar zijn of niet verzonden worden met e-mails.', + 'If disabled, this email will not send.' => 'Bij uitschakeling wordt deze e-mail niet verzonden.', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => 'Als dit is ingeschakeld en dit tarief niet overeen komt met de bestelling, wordt het tariefbedrag in mindering gebracht op de prijs in de winkelwagen.', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'Indien ingesteld op \'Alleen met toestemming\', moet u handmatig de betalingen vastleggen voordat het geld zal worden overgemaakt op uw rekening. De Gateway moet de geselecteerde optie ondersteunen.', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => 'Als u het percentage selecteert als “aftrekken van de itemprijs met korting”, omvat dit het “Bedrag per item” en alle andere eerder toegepaste kortingen.', + 'Ignore Promotions?' => 'Promoties negeren?', + 'Ignore previous matching sales if this sale matches.' => 'Eerdere overeenkomende verkopen negeren als deze verkoop overeenkomt.', + 'Ignore promotional prices when this discount is applied to matching line items' => 'Promotieprijzen negeren als deze korting is toegepast op overeenstemmende lijnitems', + 'Inactive Carts' => 'Inactieve Winkelwagens', + 'Inches (in)' => 'Inch (in)', + 'Include built-in line item tax.' => 'Ingebouwd lijnitembelasting opnemen.', + 'Include in price?' => 'Opnemen in prijs?', + 'Include line item discounts.' => 'Lijnitemkortingen opnemen.', + 'Include line item shipping costs.' => 'Verzendkosten voor lijnitem opnemen.', + 'Include separate line item tax.' => 'Afzonderlijke lijnitembelasting opnemen.', + 'Included in price?' => 'Opgenomen in prijs?', + 'Included' => 'Inbegrepen', + 'Incoming transfer from Transfer ID: ' => 'Inkomende overdracht van overdracht-ID: ', + 'Incoming' => 'Inkomend', + 'Info' => 'Info', + 'Information linked?' => 'Informatie gekoppeld?', + 'Information' => 'Informatie', + 'Invalid JSON' => 'JSON ongeldig', + 'Invalid Order ID' => 'Ongeldige bestelling-ID', + 'Invalid VAT ID.' => 'Ongeldig btw-nr.', + 'Invalid condition syntax' => 'Ongeldige voorwaardesyntaxis', + 'Invalid email.' => 'Ongeldig e-mailadres.', + 'Invalid formula syntax' => 'Ongeldige formulesyntaxis', + 'Invalid gateway: {value}' => 'Ongeldige gateway: {value}', + 'Invalid inventory movements.' => 'Ongeldige voorraadverplaatsingen.', + 'Invalid order condition syntax.' => 'De voorwaardesyntaxis van de bestelling is ongeldig.', + 'Invalid payment or order. Please review.' => 'Ongeldige betaling of bestelling. Controleer de gegevens.', + 'Invalid payment source ID: {value}' => 'Ongeldige betaalbron-ID: {value}', + 'Invalid store.' => 'Ongeldige winkel.', + 'Invalid user.' => 'Ongeldige gebruiker.', + 'Inventory Item' => 'Voorraaditem', + 'Inventory Location' => 'Voorraadlocatie', + 'Inventory Locations' => 'Voorraadlocaties', + 'Inventory Tracked' => 'Voorraad bijgehouden', + 'Inventory Transfers' => 'Voorraadoverdrachten', + 'Inventory could not be set.' => 'Voorraad kon niet worden ingesteld.', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => 'Voorraadlocatie heeft toegezegde voorraad, de bestelling(en) moet(en) eerst worden vervuld.', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => 'Voorraadlocatie heeft inkomende voorraad, de overdracht(en) moet(en) eerst worden vervuld.', + 'Inventory location is already deactivated.' => 'Voorraadlocatie is al gedeactiveerd.', + 'Inventory location saved.' => 'Voorraadlocatie opgeslagen.', + 'Inventory locations not saved.' => 'Voorraadlocaties niet opgeslagen.', + 'Inventory movement could not be saved.' => 'Voorraadverplaatsing kon niet worden opgeslagen.', + 'Inventory movement saved.' => 'Voorraadverplaatsing opgeslagen.', + 'Inventory updated.' => 'Voorraad bijgewerkt.', + 'Inventory was not updated.' => 'Voorraad niet bijgewerkt.', + 'Inventory' => 'Voorraad', + 'Invoice amount' => 'Factuurbedrag', + 'Invoice date' => 'Factuurdatum', + 'Is Promotable' => 'Is promootbaar', + 'Is Promotional Price?' => 'Is promotieprijs?', + 'Is Shippable' => 'Is verzendbaar', + 'Is Taxable' => 'Is belastbaar', + 'Item Rates' => 'Itemtarieven', + 'Item Subtotal' => 'Subtotaal artikel', + 'Item Total' => 'Totaal artikel', + 'Item' => 'Item', + 'Items' => 'Artikelen', + 'Kilograms (kg)' => 'Kilogram (kg)', + 'Label' => 'Label', + 'Landscape' => 'Liggend', + 'Language' => 'Taal', + 'Last Name' => 'Achternaam', + 'Last Updated' => 'Laatst bijgewerkt', + 'Leave a category rate override blank to use the rate from above.' => 'Laat een categorietariefoverschrijving leeg om het tarief van hierboven te gebruiken.', + 'Leave blank for unlimited uses.' => 'Laat leeg voor onbeperkt gebruik.', + 'Leave blank if products don’t have URLs' => 'Leeg laten als de producten geen URL hebben', + 'Leave gateway subscription as-is' => 'Gatewayabonnement ongewijzigd laten', + 'Length ({unit})' => 'Lengte ({unit})', + 'Length' => 'Lengte', + 'Let each product choose which sites it should be saved to' => 'Laat elk product kiezen op welke sites het wordt opgeslagen', + 'Limit which orders this discount applies to based on its line items.' => 'Beperk op welke bestellingen deze korting van toepassing is op basis van de artikelen.', + 'Limit which purchasables this sale applies to.' => 'Beperk op welke koopbare artikelen deze aanbieding van toepassing is.', + 'Limit' => 'Limiet', + 'Line Item Statuses' => 'Lijnitemstatussen', + 'Line Item' => 'Lijnitem', + 'Line Items' => 'Regelartikel', + 'Line item price (minus discounts)' => 'Lijnitemprijs (min kortingen)', + 'Line item shipping cost' => 'Verzendkosten regelartikel', + 'Line item statuses reordered.' => 'Statussen lijnitems herschikt.', + 'Link Duration' => 'Duur van de link', + 'Link Sent' => 'Link verstuurd', + 'Link to a product' => 'Link naar een product', + 'Link to a variant' => 'Link naar een variant', + 'Link' => 'Link', + 'Live' => 'Live', + 'Location' => 'Locatie', + 'Locations that should be available for previewing products in this product type.' => 'Locaties die beschikbaar moeten zijn voor het bekijken van een voorbeeld van producten in dit producttype.', + 'MM' => 'MM', + 'Make a payment' => 'Verricht een betaling', + 'Make this the primary store' => 'Dit de primaire winkel maken', + 'Manage Inventory' => 'Voorraad beheren', + 'Manage donation settings' => 'Donatie-instellingen beheren', + 'Manage general store settings' => 'Algemene winkelinstellingen beheren', + 'Manage inventory locations' => 'Voorraadlocaties beheren', + 'Manage inventory stock levels' => 'Voorraadniveaus beheren', + 'Manage inventory transfers' => 'Voorraadoverdrachten beheren', + 'Manage orders' => 'Bestellingen beheren', + 'Manage payment currencies' => 'Betaalvaluta\'s beheren', + 'Manage promotions' => 'Promoties beheren', + 'Manage shipping' => 'Verzending beheren', + 'Manage store settings' => 'Winkelinstellingen beheren', + 'Manage subscription plans' => 'Abonnementsplannen beheren', + 'Manage subscription' => 'Abonnement beheren', + 'Manage subscriptions' => 'Abonnementen beheren', + 'Manage taxes' => 'Belastingen beheren', + 'Manage' => 'Beheren', + 'Mark as Pending' => 'Markeren als in afwachting', + 'Mark as completed' => 'Markeren als voltooid', + 'Match Billing Address' => 'Factuuradres matchen', + 'Match Customer' => 'Klant matchen', + 'Match Order' => 'Bestelling matchen', + 'Match Orders' => 'Bestellingen matchen', + 'Match Product' => 'Product matchen', + 'Match Purchasable' => 'Koopbare matchen', + 'Match Shipping Address' => 'Verzendadres matchen', + 'Match Variant' => 'Variant matchen', + 'Matching Items' => 'Overeenstemmende items', + 'Max Qty' => 'Maximumhoeveelheid', + 'Max Uses' => 'Max. aantal gebruiken', + 'Max Variants' => 'Max. aantal varianten', + 'Max quantity must greater than min.' => 'Maximumhoeveelheid moet groter zijn dan minimum.', + 'Maximum Purchase Quantity' => 'Maximale orderhoeveelheid', + 'Maximum Total Shipping Cost' => 'Maximale totale verzendkosten', + 'Maximum allowed quantity' => 'Maximaal toegestane hoeveelheid', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'Maximaal aantal bijpassende items dat kan worden besteld zodat deze account van toepassing is. Met een waarde van nul wordt deze voorwaarde overgeslagen.', + 'Maximum order quantity for this item is {num}.' => 'De maximale bestelhoeveelheid voor dit artikel is {num}.', + 'Message' => 'Bericht', + 'Meters (m)' => 'Meter (m)', + 'Millimeters (mm)' => 'Millimeter (mm)', + 'Min Qty' => 'Minimumhoeveelheid', + 'Min quantity must be less than max.' => 'Minimumhoeveelheid moet keiner zijn dan maximum.', + 'Minimum Purchase Quantity' => 'Minimale bestelhoeveelheid', + 'Minimum Total Price Strategy' => 'Strategie voor minimale totaalprijs', + 'Minimum Total Shipping Cost' => 'Minimale totale verzendkosten', + 'Minimum allowed quantity' => 'Minimaal toegestane hoeveelheid', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'Minimale aantal bijpassende items dat moet worden besteld om deze korting te krijgen.', + 'Minimum order quantity for this item is {num}.' => 'De minimale bestelhoeveelheid voor dit artikel is {num}.', + 'Missing Gateway' => 'Ontbrekende gateway', + 'Missing a default inventory location.' => 'Standaard voorraadlocatie ontbreekt.', + 'Move Inventory' => 'Voorraad verplaatsen', + 'Move To' => 'Verplaatsen naar', + 'Move {qty} from {fromType} to {toType}' => '{qty} verplaatsen van {fromType} naar {toType}', + 'Move' => 'Verplaatsen', + 'Movement from deactivated inventory location' => 'Verplaatsing van gedeactiveerde voorraadlocatie', + 'Movement' => 'Verplaatsing', + 'Must have at least one variant.' => 'Moet minstens één variant hebben.', + 'Name Field' => 'Naamveld', + 'Name' => 'Naam', + 'New Customer' => 'Nieuwe klant', + 'New Customers' => 'Nieuwe klanten', + 'New Order' => 'Nieuwe bestelling', + 'New PDF' => 'Nieuwe pdf', + 'New address' => 'Nieuw adres', + 'New catalog pricing rule' => 'Nieuwe catalogusprijsregel', + 'New currency' => 'Nieuwe valuta', + 'New discount' => 'Nieuwe korting', + 'New email' => 'Nieuwe e-mail', + 'New gateway' => 'Nieuwe gateway', + 'New line item status' => 'Nieuwe lijnitemstatus', + 'New line items get this status by default when the order is completed' => 'Nieuwe regelartikelen krijgen standaard deze status wanneer de bestelling voltooid is', + 'New location' => 'Nieuwe locatie', + 'New order status' => 'Status van nieuwe order', + 'New orders get this status by default' => 'Nieuwe bestellingen krijgen deze status standaard', + 'New product type' => 'Nieuw producttype', + 'New product' => 'Nieuw product', + 'New product, choose a type' => 'Nieuw product, kies een type', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => 'Nieuwe producten worden standaard in de eerste beschikbare belastingcategorie geplaatst. Als er geen beschikbaar is, wordt deze categorie gebruikt.', + 'New sale' => 'Nieuwe korting', + 'New shipping category' => 'Nieuwe verzendcategorie', + 'New shipping method' => 'Nieuwe verzendmethode', + 'New shipping rule' => 'Nieuwe verzendingsregel', + 'New shipping zone' => 'Nieuw verzendingszone', + 'New subscription plan' => 'Nieuw abonnementsplan', + 'New tax category' => 'Nieuwe fiscale categorie', + 'New tax rate' => 'Nieuw BTW tarief', + 'New tax zone' => 'Nieuwe fiscale zone', + 'New transfer' => 'Nieuwe overdracht', + 'New {productType} product' => 'Nieuw {productType}-product', + 'New' => 'Nieuw', + 'Next payment' => 'Volgende betaling', + 'No Address' => 'Geen adres', + 'No PDFs exist yet.' => 'Er bestaan ​​nog geen pdf\'s.', + 'No access given to any specific store management features.' => 'Geen toegang gegeven tot specifieke winkelbeheerfuncties.', + 'No additional payment currencies exist yet.' => 'Er zijn geen aanvullende betaalvaluta\'s.', + 'No address' => 'Geen adres', + 'No billing address' => 'Geen factuuradres', + 'No catalog pricing rule exists with the ID “{id}”' => 'Er bestaat geen catalogusprijsregel met ID “{id}”', + 'No catalog pricing rules exist yet.' => 'Er bestaan nog geen catalogusprijsregels.', + 'No currency exists with the ID “{id}”' => 'Er bestaan geen valuta met ID "{id}"', + 'No customer email address exists on this cart.' => 'Er bestaat geen e-mailadres van een klant voor deze winkelwagen.', + 'No description' => 'Geen beschrijving', + 'No discount exists with the ID “{id}”' => 'Er bestaat geen korting met ID "{id}"', + 'No discounts exist yet.' => 'Er bestaan nog geen kortingen.', + 'No donation amount supplied.' => 'Geen donatiebedrag opgegeven.', + 'No emails exist yet.' => 'Er bestaan nog geen e-mails.', + 'No inventory changes made.' => 'Geen voorraadwijzigingen aangebracht.', + 'No inventory found.' => 'Geen voorraad gevonden.', + 'No inventory movements made.' => 'Geen voorraadverplaatsingen gedaan.', + 'No inventory transactions for this location.' => 'Geen voorraadtransacties voor deze locatie.', + 'No new customer selected.' => 'Geen nieuwe klant geselecteerd.', + 'No order history exists with the ID “{id}”' => 'Er bestaat geen bestegeschiedenis met ID “{id}”', + 'No order status history items will exist until the cart becomes an order.' => 'Er worden pas items aan de geschiedenis van de orderstatus toegevoegd nadat de winkelwagen een order is geworden.', + 'No payment source exists with the ID “{id}”' => 'Er bestaat geen betaalbron met ID “{id}”', + 'No private Note.' => 'Geen privénotitie.', + 'No product available.' => 'Geen product beschikbaar.', + 'No product types exist yet.' => 'Er bestaan nog geen producttypen.', + 'No purchasable available.' => 'Geen koopbare artikelen beschikbaar.', + 'No sale exists with the ID “{id}”' => 'Er bestaat geen aanbieding met ID “{id}”', + 'No sales exist yet.' => 'Er bestaan ​​nog geen verkopen.', + 'No shipping address' => 'Geen verzendadres', + 'No shipping category exists with the ID “{id}”' => 'Er bestaat geen verzendcategorie met ID "{id}"', + 'No shipping method exists with the ID “{id}”' => 'Er bestaat geen verzendmethode met ID “{id}”', + 'No shipping rule exists with the ID “{id}”' => 'Er bestaat geen verzendingsregel met ID “{id}”', + 'No shipping rules exist yet.' => 'Er bestaan nog geen verzendingsregels.', + 'No shipping zone exists with the ID “{id}”' => 'Verzendingszone met ID “{id}” bestaat niet', + 'No stats available.' => 'Geen statistieken beschikbaar.', + 'No subscription plan exists with the ID “{id}”' => 'Er bestaat geen abonnementsplan met ID “{id}”', + 'No subscription plans exist yet.' => 'Er bestaan nog geen abonnementsplannen.', + 'No tax category exists with the ID “{id}”' => 'Er bestaat geen belastingcategorie met ID “{id}”', + 'No tax rate exists with the ID “{id}”' => 'Er bestaat geen belastingtarief met ID “{id}”', + 'No tax zone exists with the ID “{id}”' => 'Er bestaat geen belastingzone met ID “{id}”', + 'No transactions exist.' => 'Er zijn geen transacties.', + 'No user authenticated.' => 'Geen gebruiker geauthenticeerd.', + 'No' => 'Nee', + 'None on hand' => 'Geen aanwezig', + 'None' => 'Geen', + 'Not a valid address type' => 'Geen geldig adrestype', + 'Not a valid credit card number.' => 'Geen geldig creditcardnummer.', + 'Not all SKUs are unique.' => 'Niet alle SKU\'s zijn uniek.', + 'Note' => 'Opmerking', + 'Notes' => 'Notities', + 'Number of Coupons' => 'Aantal coupons', + 'Number' => 'Aantal', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => 'Op welke van de bovenstaande ingeschakelde sites moeten producten van dit producttype worden opgeslagen?', + 'On Hand' => 'Aanwezig', + 'Only allow this gateway to be used for zero value orders?' => 'Toestaan dat deze gateway alleen wordt gebruikt voor orders met waarde nul?', + 'Only match certain purchasables…' => 'Alleen bepaalde koopbare artikelen vergelijken…', + 'Only match purchasables related to…' => 'Alleen koopbare artikelen vergelijken gerelateerd aan…', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => 'Alleen bestellingen met de volgende bestelstatussen worden meegenomen. Laat dit leeg voor alle statussen.', + 'Only save product to the site they were created in' => 'Product alleen opslaan op de site waarop het is gemaakt', + 'Options' => 'Opties', + 'Order Condition Formula' => 'Formule bestelvoorwaarde', + 'Order Description Format' => 'Bestellingbeschrijvingsformaat', + 'Order Details' => 'Bestellingsgegevens', + 'Order Fields' => 'Bestellingsvelden', + 'Order PDF Download Link' => 'Pdf-downloadlink van de bestelling', + 'Order PDF Filename Format' => 'Bestelling-PDF-Bestandsnaamformaat', + 'Order Reference Number Format' => 'Notatie orderreferentienummer', + 'Order Settings' => 'Bestellingsinstellingen', + 'Order Site' => 'Bestelsite', + 'Order Status description.' => 'Beschrijving bestellingsstatus.', + 'Order Status' => 'Bestelstatus', + 'Order Statuses' => 'Orderstatussen', + 'Order can not be empty.' => 'De bestelling mag niet leeg zijn.', + 'Order count' => 'Aantal bestellingen', + 'Order customer data removed.' => 'Klantgegevens bestellingen verwijderd.', + 'Order deleted.' => 'Bestelling verwijderd.', + 'Order fields saved.' => 'Bestellingsvelden opgeslagen.', + 'Order not found.' => 'Bestelling niet gevonden.', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => 'Het saldo voor betaling van de bestelling is {outstandingBalanceAsCurrency}. Dit is de maximumwaarde die wordt aangerekend.', + 'Order recalculated.' => 'Bestelling herberekend.', + 'Order status saved.' => 'Bestelstatus opgeslagen.', + 'Order statuses reordered.' => 'Bestelstatussen herschikt.', + 'Order total shipping cost' => 'Totale verzendkosten bestelling', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => 'Totale belastbare prijs bestelling (subtotaal van regelartikel + totale kortingen + totale verzendkosten)', + 'Order' => 'Bestelling', + 'Orders (Legacy)' => 'Bestellingen (Verouders)', + 'Orders deleted.' => 'Bestellingen verwijderd.', + 'Orders not restored.' => 'Bestellingen niet hersteld.', + 'Orders restored.' => 'Bestellingen hersteld.', + 'Orders' => 'Bestellingen', + 'Organization Name' => 'Organisatienaam', + 'Organization Tax ID' => 'Fiscaal nummer organisatie', + 'Origin and destination cannot be the same.' => 'Oorsprong en bestemming kunnen niet hetzelfde zijn.', + 'Origin' => 'Oorsprong', + 'Original Price' => 'Oorspronkelijke prijs', + 'Original price' => 'Oorspronkelijke prijs', + 'Original promotional price' => 'Oorspronkelijke promotieprijs', + 'Other Languages' => 'Andere talen', + 'Other countries' => 'Andere landen', + 'Outgoing transfer from Transfer ID: ' => 'Uitgaande overdracht van overdracht-ID: ', + 'Overpaid' => 'Teveel betaald', + 'Overrides previous?' => 'Vorige overschrijven?', + 'PDF Attachment' => 'Pdf-bijlage', + 'PDF Template Path' => 'Pad van PDF-sjabloon', + 'PDF saved.' => 'PDF opgeslagen.', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'Pdf\'s en e-mails', + 'PDFs' => 'Pdf\'s', + 'Paid Amount' => 'Betaald bedrag', + 'Paid Status' => 'Status Betaald', + 'Paid' => 'Betaald', + 'Paper Orientation' => 'Papierstand', + 'Paper Size' => 'Papierformaat', + 'Partial payment not allowed.' => 'Gedeeltelijke betaling niet toegestaan.', + 'Partial' => 'Gedeeltelijk', + 'Past year' => 'Vorig jaar', + 'Past {num} days' => 'Afgelopen {num} dagen', + 'Pay {amount} of {currency} on the order.' => '{amount} {currency} betalen voor de bestelling.', + 'Pay' => 'Betalen', + 'Payment Amount' => 'Betaalbedrag', + 'Payment Currencies' => 'Betaalvaluta\'s', + 'Payment Gateway' => 'Betalingsgateway', + 'Payment Method' => 'Betaalmethode', + 'Payment error: {message}' => 'Betalingsfout: {message}', + 'Payment method issue' => 'Probleem met betaalmethode', + 'Payment source created.' => 'Betaalbron aangemaakt.', + 'Payment source deleted.' => 'Betaalbron verwijderd.', + 'Payments' => 'Betalingen', + 'Pending' => 'In afwachting', + 'Per Email Address Discount Limit' => 'Kortingslimiet per e-mailadres', + 'Per Item Amount Off' => 'Kortingbedrag per item', + 'Per Item Discount' => 'Korting per artikel', + 'Per Item Percentage Off' => 'Kortingpercentage per item', + 'Per Item Rate' => 'Per stuk prijs', + 'Per User Discount Limit' => 'Kortingslimiet per gebruiker', + 'Percentage Rate' => 'Percentage Tarief', + 'Phone (Alt)' => 'Telefoon (alt)', + 'Phone' => 'Telefoon', + 'Pick a plan' => 'Een plan selecteren', + 'Plain Text Email Template Path' => 'Sjabloonpad e-mail met platte tekst', + 'Plan' => 'Plan', + 'Plans reordered.' => 'Plannen herschikt.', + 'Portrait' => 'Staand', + 'Post Date' => 'Post datum', + 'Postal Code Formula' => 'Postcodeformule', + 'Pounds (lb)' => 'Pond (lb)', + 'Preview' => 'Preview', + 'Previous Status' => 'Vorige status', + 'Price' => 'Prijs', + 'Prices' => 'Prijzen', + 'Pricing Rules' => 'Prijsregels', + 'Pricing jobs are currently running.' => 'Er worden momenteel prijstaken uitgevoerd.', + 'Pricing' => 'Prijzen', + 'Primary Billing Address' => 'Primair factuuradres', + 'Primary Shipping Address' => 'Primair verzendadres', + 'Primary payment source updated.' => 'Primaire betaalbron bijgewerkt.', + 'Primary' => 'Primair', + 'Private Note' => 'Privénotitie', + 'Product Fields' => 'Productvelden', + 'Product ID is required.' => 'De product-ID is verplicht.', + 'Product Template' => 'Product Sjabloon', + 'Product Title Format' => 'Titelformaat product', + 'Product Type' => 'Producttype', + 'Product Types' => 'Producttypen', + 'Product URI Format' => 'URI-formaat product', + 'Product Variant' => 'Productvariant', + 'Product Variants' => 'Productvarianten', + 'Product type saved.' => 'Producttype opgeslagen.', + 'Product type settings' => 'Instellingen voor het producttype', + 'Product' => 'Product', + 'Products and Variants deleted.' => 'Producten en varianten verwijderd.', + 'Products not restored.' => 'Producten niet hersteld.', + 'Products restored.' => 'Producten hersteld.', + 'Products' => 'Producten', + 'Promotable' => 'Promootbaar', + 'Promotable?' => 'Promotie mogelijk?', + 'Promotional Amount' => 'Promotiebedrag', + 'Promotional Price' => 'Promotieprijs', + 'Purchasable Categories' => 'Koopbare categorieën', + 'Purchasable ID and Sale ID are required.' => 'ID koopbaar artikel en ID aanbieding zijn verplicht.', + 'Purchasable ID is required.' => 'ID koopbaar artikel is verplicht.', + 'Purchasable Type' => 'Koopbaar type', + 'Purchasable' => 'Koopbaar', + 'Purchase (Authorize and Capture Immediately)' => 'Kopen (onmiddellijk autoriseren en registreren)', + 'Purchase Total' => 'Ordertotaal', + 'Qty' => 'Aant.', + 'Quality Control' => 'Kwaliteitscontrole', + 'Quantity' => 'Hoeveelheid', + 'Rate' => 'Score', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => '{numOrders, plural, one {}=1{bestelling} other{bestellingen}} opnieuw toewijzen', + 'Recalculate order' => 'Bestelling herberekenen', + 'Receive Inventory' => 'Voorraad ontvangen', + 'Receive Transfer' => 'Overdracht ontvangen', + 'Receive' => 'Ontvangen', + 'Received' => 'Ontvangen', + 'Recent Orders' => 'Recente bestellingen', + 'Recipient' => 'Ontvanger', + 'Recover Cart' => 'Winkelwagen herstellen', + 'Reduce price' => 'Prijs verminderen', + 'Reduce the price by a fixed amount' => 'De prijs verminderen met een vast bedrag', + 'Reduce the price by a percentage of the original price' => 'Verlaag de prijs met een percentage van de originele prijs', + 'Reference' => 'Verwijzing', + 'Refresh payment history' => 'Betalingsgeschiedenis vernieuwen', + 'Refund note' => 'Terugbetalingsnotitie', + 'Refund payment' => 'Betaling terugbetalen', + 'Refund' => 'Terugbetaling', + 'Reject' => 'Weigeren', + 'Rejected' => 'Geweigerd', + 'Relationship Type' => 'Relatietype', + 'Removable included tax rates are only allowed for the default tax zone.' => 'Verwijderbare opgenomen belastingtarieven zijn alleen toegestaan voor de standaard belastingzone.', + 'Remove address' => 'Adres verwijderen', + 'Remove all shipping costs from the order' => 'Alle verzendkosten verwijderen van de bestelling', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => 'Verwijder klantassociatie en e-mailadres uit de {numOrders, plural, one {}=1{bestelling} other{bestellingen}}. Selecteer optioneel extra klantgegevens hieronder om te verwijderen', + 'Remove customer data' => 'Klantgegevens verwijderen', + 'Remove from price?' => 'Verwijderen van prijs?', + 'Remove shipping costs for matching items only' => 'Verzendkosten alleen verwijderen voor overeenstemmende items', + 'Remove the included tax when a valid organization tax ID is present?' => 'Inbegrepen belasting verwijderen als er een geldig fiscaal nummer aanwezig is voor een organisatie?', + 'Remove' => 'Verwijderen', + 'Removed' => 'Verwijderd', + 'Repeat Customers' => 'Terugkerende klanten', + 'Reply To' => 'Antwoorden aan', + 'Require Billing Address At Checkout' => 'Factuuradres vereisen bij afrekenen', + 'Require Coupon Code' => 'Couponcode vereisen', + 'Require Shipping Address At Checkout' => 'Verzendadres vereisen bij afrekenen', + 'Require Shipping Method Selection At Checkout' => 'Selectie van verzendmethode vereisen bij afrekenen', + 'Require' => 'Vereisen', + 'Reserved' => 'Gereserveerd', + 'Reset usage' => 'Gebruik resetten', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'Beperk de korting tot de bestellingen waarbij de klant een minimum aantal waarde aan bijbehorende items heeft gekocht.', + 'Revenue Options' => 'Omzetopties', + 'Revenue' => 'Inkomsten', + 'Rule' => 'Regel', + 'Rules reordered.' => 'Regels herschikt.', + 'SKU' => 'Artikelnummer', + 'Safety' => 'Veiligheid', + 'Sale Price' => 'Prijs aanbieding', + 'Sale description.' => 'Aanbieding omschrijving.', + 'Sale reordered.' => 'Aanbieding herschikt.', + 'Sale saved.' => 'Aanbieding opgeslagen.', + 'Sale' => 'Aanbieding', + 'Sales deleted.' => 'Verkopen verwijderd.', + 'Sales updated.' => 'Aanbiedingen bijgewerkt.', + 'Sales' => 'Aanbiedingen', + 'Save and continue editing' => 'Opslaan en doorgaan met aanpassen', + 'Save and return to all orders' => 'Opslaan en terugkeren naar alle bestellingen', + 'Save and set rules' => 'Opslaan en voer regels in', + 'Save as a new rule' => 'Opslaan als nieuwe regel', + 'Save product to all sites enabled for this product type' => 'Product opslaan op alle sites die zijn ingeschakeld voor dit producttype', + 'Save product to other sites in the same site group' => 'Product opslaan op andere sites in dezelfde sitegroep', + 'Save product to other sites with the same language' => 'Product opslaan op andere sites met dezelfde taal', + 'Save' => 'Opslaan', + 'Search customer…' => 'Klant zoeken ...', + 'Search inventory' => 'Voorraad zoeken', + 'Search or enter customer email…' => 'E-mailadres klant zoeken of invoeren ...', + 'Search…' => 'Zoeken …', + 'See Orders' => 'Bestellingen weergeven', + 'Select a gateway' => 'Een gateway selecteren', + 'Select a tax category.' => 'Selecteer een BTW categorie.', + 'Select a tax zone. If empty, this rate will match anywhere.' => 'Selecteer een belastingzone. Als deze leeg is, is dit tarief overal van toepassing.', + 'Select address' => 'Adres selecteren', + 'Select an item' => 'Selecteer een item', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'Selecteer hoe de catalogusprijsregel wordt toegepast op de koopbare artikelen.', + 'Select how the sale will be applied to the purchasable(s).' => 'Selecteer hoe de aanbieding wordt toegepast op de te koop aangeboden artikelen.', + 'Select product type' => 'Selecteer producttype', + 'Select the emails that will be sent when transitioning to this status.' => 'Selecteer de e-mails die zullen worden verstuurd wanneer er wordt overgegaan naar deze status.', + 'Select what this rate should be applied to.' => 'Selecteer waarop dit tarief moet worden toegepast.', + 'Send Email' => 'E-mail verzenden', + 'Send to custom recipient' => 'Verzenden naar aangepaste ontvanger', + 'Send to the customer' => 'Verstuur naar de klant', + 'Set Quantity' => 'Hoeveelheid instellen', + 'Set default category' => 'Standaardcategorie instellen', + 'Set default variant' => 'Standaardvariant instellen', + 'Set or Adjust' => 'Instellen of aanpassen', + 'Set price' => 'Prijs instellen', + 'Set status' => 'Status instellen', + 'Set the price to a flat amount' => 'Prijs instellen op vast bedrag', + 'Set the price to a percentage of the original price' => 'Stel de prijs in op een percentage van de oorspronkelijke prijs', + 'Set the sale price to a flat amount' => 'De prijs instellen op een vast bedrag', + 'Set the sale price to a percentage of the original price' => 'De prijs van de aanbieding instellen als een percentage van de oorspronkelijke prijs', + 'Set to' => 'Instellen op', + 'Settings saved.' => 'Instellingen opgeslagen.', + 'Settings' => 'Instellingen', + 'Share cart…' => 'Winkelwagen delen ...', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => 'Verzending - de minimumkosten zijn de verzendkosten als de prijs van de bestelling lager is dan de verzendkosten.', + 'Shipping Address Zone' => 'Verzendadreszone', + 'Shipping Address' => 'Verzendadres', + 'Shipping Business Name' => 'Bedrijfsnaam voor verzending', + 'Shipping Categories' => 'Verzendcategorieën', + 'Shipping Category Conditions' => 'Voorwaarden verzendcategorie', + 'Shipping Category' => 'Verzendcategorie', + 'Shipping First Name' => 'Voornaam voor verzending', + 'Shipping Full Name' => 'Volledige naam voor verzending', + 'Shipping Last Name' => 'Achternaam voor verzending', + 'Shipping Method' => 'Verzendmethode', + 'Shipping Methods' => 'Verzend methoden', + 'Shipping Rule' => 'Verzendingsregel', + 'Shipping Zones' => 'Verzendingszones', + 'Shipping address required.' => 'Verzendadres verplicht.', + 'Shipping categories deleted.' => 'Verzendcategorieën verwijderd.', + 'Shipping category saved.' => 'Verzendcategorie opgeslagen.', + 'Shipping category updated.' => 'Verzendcategorie bijgewerkt.', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'Verzendkosten die aan de bestelling worden toegevoegd als geheel voordat percentage-, item- en gewichtstarieven worden toegepast. Zet dit op nul om dit tarief uit te schakelen. De gehele regel, inclusief dit basistarief, wordt niet toegepast als de winkelwagen alleen niet-verzendbare items zoals digitale producten bevat.', + 'Shipping method saved.' => 'Verzendmethode opgeslagen.', + 'Shipping methods and rules deleted.' => 'Verzendcategorieën en regels verwijderd.', + 'Shipping methods updated.' => 'Verzendmethoden bijgewerkt.', + 'Shipping rule saved.' => 'Verzendingsregel opgeslagen.', + 'Shipping zone saved.' => 'Verzendingszone opgeslagen.', + 'Shipping' => 'Verzending', + 'Short Number' => 'Kort nummer', + 'Show Chart?' => 'Grafiek tonen?', + 'Show Order Count?' => 'Aantal bestellingen tonen?', + 'Show all prices' => 'Alle prijzen weergeven', + 'Show archived gateways' => 'Gearchiveerde gateways weergeven', + 'Show order count line on chart.' => 'Lijn met aantal bestellingen tonen in grafiek.', + 'Show related sales' => 'Gerelateerde verkopen weergeven', + 'Show rule details' => 'Regeldetails tonen', + 'Show the Dimensions and Weight fields for products of this type' => 'Toon de dimensies en gewicht velden voor producten van dit type', + 'Show the Title field for products' => 'Het titelveld tonen voor producten', + 'Show the Title field for variants' => 'Toon het titel veld voor varianten', + 'Signed In' => 'Aangemeld', + 'Site Languages' => 'Talen van de site', + 'Site store mapping saved.' => 'Site-winkelkoppeling opgeslagen.', + 'Sites' => 'Websites', + 'Slug' => 'Slug', + 'Snapshot' => 'Snapshot', + 'Snapshots' => 'Snapshots', + 'Some orders restored.' => 'Sommige bestellingen zijn hersteld.', + 'Some products restored.' => 'Sommige producten zijn hersteld.', + 'Some variants restored.' => 'Sommige verianten zijn hersteld.', + 'Something changed with the order before payment, please review your order and submit payment again.' => 'De bestelling is gewijzigd voorafgaand aan de betaling. Controleer uw bestelling en verricht de betaling opnieuw.', + 'Sorry, no matching options.' => 'Er zijn helaas geen overeenstemmende opties.', + 'Source - The purchasable relationship field is on the category' => 'Bron - het relatieveld van het koopbare artikel bevindt zich in de categorie', + 'Source' => 'Bron', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Geef een Twig-voorwaarde op die bepaalt of de korting van toepassing is voor een specifieke bestelling. (Via een `order` variabele kan worden verwezen naar de bestelling.)', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Geef een Twig-voorwaarde op die bepaalt of de verzendingsregel van toepassing is voor een specifieke bestelling. (Via een `order` variabele kan worden verwezen naar de bestelling.)', + 'Start Date' => 'Startdatum', + 'State' => 'Provincie', + 'Status Email Address' => 'E-mailadres status', + 'Status Emails' => 'Status e-mail', + 'Status History' => 'Statusgeschiedenis', + 'Status Updated.' => 'Status bijgewerkt.', + 'Status change message' => 'Melding van statuswijziging', + 'Status' => 'Status', + 'Stock' => 'Voorraad', + 'Stops Processing?' => 'Verwerking stoppen?', + 'Stops subsequent?' => 'Volgende stoppen?', + 'Store Location' => 'Winkellocatie', + 'Store Management' => 'Winkelbeheer', + 'Store Markets' => 'Winkelmarkten', + 'Store Rule' => 'Winkelregel', + 'Store saved.' => 'Winkel opgeslagen.', + 'Store' => 'Winkel', + 'Stores & Sites' => 'Winkels en sites', + 'Stores' => 'Winkels', + 'Strategy to apply when an order is free or has a zero balance.' => 'De strategie die moet worden toegepast voor een gratis bestelling of een bestelling met een nulsaldo.', + 'Strategy to apply when calculating the minimum order price.' => 'Toe te passen strategie bij het berekenen van de minimale bestelprijs.', + 'Subject' => 'Onderwerp', + 'Subscribing user' => 'Geabonneerde gebruiker', + 'Subscription Fields' => 'Abonnementsvelden', + 'Subscription Plans' => 'Abonnementsplannen', + 'Subscription Settings' => 'Abonnementsinstellingen', + 'Subscription cancelled.' => 'Abonnement geannuleerd.', + 'Subscription date' => 'Datum van abonnement', + 'Subscription fields saved.' => 'Abonnementsvelden opgeslagen.', + 'Subscription for {user} to {plan} prevented by a plugin.' => 'Abonnement van {user} voor {plan} is door een plug-in voorkomen.', + 'Subscription plan saved.' => 'Abonnementsplan opgeslagen.', + 'Subscription plan' => 'Abonnementsplan', + 'Subscription plans' => 'Abonnementsplannen', + 'Subscription reactivated.' => 'Abonnement opnieuw geactiveerd.', + 'Subscription reference' => 'Abonnementsreferentie', + 'Subscription started.' => 'Abonnement gestart.', + 'Subscription switched.' => 'Abonnement omgeschakeld.', + 'Subscription to “{plan}”' => 'Abonnement op “{plan}”', + 'Subscription' => 'Abonnement', + 'Subscriptions on hold' => 'Abonnementen in wachtstand', + 'Subscriptions' => 'Abonnementen', + 'Suppress emails' => 'E-mails onderdrukken', + 'Switch plan' => 'Ander plan selecteren', + 'Switch' => 'Wisselen', + 'System' => 'Systeem', + 'Table Columns' => 'Tabelkolommen', + 'Target - The category relationship field is on the purchasable' => 'Doel - het relatieveld categorie bevindt zich op het koopbare artikel', + 'Tax & Shipping' => 'Belasting en verzending', + 'Tax (inc)' => 'Belasting (incl.)', + 'Tax Categories' => 'BTW categorieën', + 'Tax Category' => 'Fiscale Categorie', + 'Tax Rates' => 'Belastingtarieven', + 'Tax Zone' => 'Fiscale Zone', + 'Tax Zones' => 'Fiscale zones', + 'Tax categories deleted.' => 'Belastingcategorieën verwijderd.', + 'Tax category saved.' => 'Belastingcategorie opgeslagen.', + 'Tax category updated.' => 'Belastingcategorie bijgewerkt.', + 'Tax rate saved.' => 'Belastingtarief opgeslagen.', + 'Tax rates updated.' => 'Belastingtarieven bijgewerkt.', + 'Tax zone saved.' => 'Belastingzone opgeslagen.', + 'Tax' => 'Belasting', + 'Taxable Subject' => 'Belastingplichtig persoon', + 'Template Path' => 'Template pad', + 'That handle is already in use' => 'Deze ingang is al in gebruik', + 'That handle is already in use.' => 'Deze ingang is al in gebruik.', + 'The PDF to attach to this email.' => 'De pdf die in bijlage wordt toegevoegd aan deze e-mail.', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => 'De URL van de pagina voor het bijwerken van factuurgegevens voor een abonnement en voor 3DS-authenticatie.', + 'The address provided is outside the store’s market.' => 'Het opgegeven adres is buiten het marktgebied van de winkel.', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => 'Het kortingbedrag dat wordt toegepast op de hele bestelling. Dit bedrag is verdeeld over de lijnitems van de hoogste tot de laagste prijs, totdat de korting is opgebruikt.', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => 'De basiskorting kan maar tot nul korting toepassen voor items in de winkelwagen en kan de bestelling niet negatief maken.', + 'The cart recovery link is invalid. Please request a new one.' => 'De link voor het herstellen van de winkelwagen is ongeldig. Vraag een nieuwe aan.', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => 'Het conversietarief dat wordt gebruikt bij het omrekenen van een bedrag naar deze valuta. Als een item bijvoorbeeld {amount1} kost, dan is dit met een conversietarief van {rate} een bedrag van {amount2} in de andere valuta.', + 'The countries that orders are allowed to be placed from.' => 'De landen van waaruit bestellingen mogen worden geplaatst.', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'De gebruikslimiet van {limit} van de coupon "{code}" is overschreden.', + 'The customer for this order has been deleted.' => 'De klant voor deze bestelling is verwijderd.', + 'The default shipping category is automatically available to all product types.' => 'De standaardverzendcategorie is automatisch beschikbaar voor alle producttypes.', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'De gebruikslimiet van {limit} van de korting "{name}" is overschreden.', + 'The download link has expired. Please request a new one.' => 'De downloadlink is verlopen. Vraag een nieuwe aan.', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => 'Het e-mailadres waarvan bestelling status e-mails worden verzonden. Laat leeg om het Systeem E-mailadres vastgesteld in de algemene instellingen van Craft te gebruiken.', + 'The entry that contains the description for this subscription’s plan.' => 'Het item met een beschrijving voor dit abonnementsplan.', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => 'De vaste waarde van de korting voor elk item. Bijv. “3” voor $ 3 korting op elk item.', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => 'De gebruikte notatie om nieuwe coupons te genereren, bijvoorbeeld {example}. \'#\'-tekens worden vervangen door een willekeurige letter.', + 'The from and to inventory locations must be different.' => 'De voorraadlocatie van en naar moeten verschillend zijn.', + 'The inventory locations this store uses.' => 'De inventarisatielocaties die deze winkel gebruikt.', + 'The item is not enabled for sale.' => 'Het artikel is niet ingeschakeld voor verkoop.', + 'The language the order was made in.' => 'De taal waarin de bestelling is geplaatst.', + 'The language to be used when this email is rendered.' => 'De taal die moet worden gebruikt bij het renderen van deze e-mail.', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'Het maximum aantal niveau\'s dat dit producttype kan hebben. Laat leeg als dit niet uitmaakt.', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => 'Het maximumbedrag dat de klant zou moeten uitgeven aan verzending. Stel in op nul om uit te schakelen.', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => 'Het minimumbedrag dat de klant zou moeten uitgeven aan verzending. Stel in op nul om uit te schakelen.', + 'The order is not valid.' => 'De bestelling is ongeldig.', + 'The payment gateway that will be used for the subscription plan.' => 'De betaalgateway die voor dit abonnementsplan wordt gebruikt.', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => 'De percentielwaarde van de korting voor elk item. Bijv. {ex1} voor {ex2} korting. Percentages worden afgerond tot op 2 decimalen.', + 'The previously-selected shipping method is no longer available.' => 'De eerder geselecteerde verzendmethode is niet meer beschikbaar.', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'De prijs van {description} is verhoogd van {originalSalePriceAsCurrency} naar {newSalePriceAsCurrency}', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'De prijs van {description} is gedaald van {originalSalePriceAsCurrency} naar {newSalePriceAsCurrency}', + 'The primary currency cannot be changed after orders are placed.' => 'De primaire valuta kan niet worden gewijzigd na het plaatsen van bestellingen.', + 'The purchasable defines the relationship' => 'Het koopbare artikel bepaalt de relatie', + 'The purchasable is related by another element' => 'Het koopbare artikel is gerelateerd aan een ander element', + 'The recipient of the email. Twig code can be used here.' => 'De ontvanger van de e-mail. Hier kan Twig-code worden gebruikt.', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => 'Het e-mailadres om te antwoorden. Laat dit leeg om het gewone e-mailadres van de afzender te gebruiken. Hier kunt u Twig-code gebruiken.', + 'The site the order was made in.' => 'De site waarop de bestelling is geplaatst.', + 'The site to be used when this email is rendered.' => 'De site die moet worden gebruikt bij het renderen van deze e-mail.', + 'The subject line of the email. Twig code can be used here.' => 'Het onderwerp van de e-mail. Hier kunt u Twig-code gebruiken.', + 'The template that the PDF should be generated from.' => 'De sjabloon op basis waarvan de pdf wordt gemaakt.', + 'The template to be used for HTML emails.' => 'De template die gebruikt moet worden voor HTML e-mail.', + 'The template to be used for plain text emails. Twig code can be used here.' => 'De sjabloon voor e-mails met platte tekst. Hier kunt u Twig-code gebruiken.', + 'The template to use when a product’s URL is requested.' => 'Het sjabloon om te gebruiken wanneer een URL van een product wordt opgevraagd.', + 'The total number of order adjustments changed.' => 'Het totale aantal bestellingsaanpassingen is veranderd.', + 'The total price of the order changed.' => 'De totale prijs van de bestelling is veranderd.', + 'The total quantity of items within the order changed.' => 'De totale hoeveelheid artikelen binnen de bestelling is veranderd.', + 'The unique SKU of the donation purchasable.' => 'De unieke SKU van de te kopen donatie.', + 'The unit of measurement that should be used when specifying product dimensions.' => 'De meet eenheid die gebruikt moet worden wanneer dimensies van een product worden gespecificeerd.', + 'The unit of measurement that should be used when specifying product weights.' => 'De meet eenheid die gebruikt moet worden wanneer gewichten van een product worden gespecificeerd.', + 'The webhook URL for this gateway.' => 'De webhook-URL voor deze gateway.', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => 'De “Van” naam die gebruikt zal worden bij het verzenden van bestelling status e-mails. Laat leeg om de Verzender Naam vastgesteld in de algemene instellingen van Craft te gebruiken.', + 'There are errors on the order' => 'De bestelling bevat fouten', + 'There are only {num} “{description}” items left in stock.' => 'Er zijn nog maar {num} “{description}”-artikelen op voorraad.', + 'There aren’t any product types to select yet.' => 'Er zijn nog geen producttypen om te selecteren.', + 'There is no gateway or payment source available for use with this order.' => 'Er is geen gateway of betalingsbron beschikbaar om te gebruiken bij deze bestelling.', + 'There is no gateway selected that supports payment sources.' => 'Er is geen gateway geselecteerd die betaalbronnen ondersteunt.', + 'There is no shipping method selected for this order.' => 'Voor deze bestelling is geen verzendmethode geselecteerd.', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'Deze URL zal de winkelwagen laden in de sessie van de gebruiker en er de actieve winkelwagen van maken.', + 'This action is not allowed for the current user.' => 'Deze is actie is niet toegestaan voor de huidige gebruiker.', + 'This category will be used as the default for all purchasables in this store.' => 'Deze categorie wordt gebruikt als standaardcategorie voor alle koopbare artikelen in deze winkel.', + 'This coupon is for registered users and limited to {limit} uses.' => 'Deze coupon is voor geregistreerde gebruikers en maximaal {limit} keer bruikbaar.', + 'This coupon is limited to {limit} uses.' => 'Deze coupon mag {limit} keer gebruikt worden.', + 'This coupon requires an email address.' => 'Deze coupon vereist een e-mailadres.', + 'This gateway does not support that functionality.' => 'Deze gateway ondersteunt deze functionaliteit niet.', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'Dit wordt overschreven door de configuratie-instelling {setting} in `config/{file}.php`.', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'Dit is het adres waar uw winkel is gevestigd. Dit adres kan door verschillende invoegtoepassingen worden gebruikt, onder andere voor verzending en belastingen. Het kan ook in PDF-bonnen worden gebruikt.', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'Dit is de standaard pdf die wordt weergegeven bij het opvragen van de bestel-pdf.', + 'This is the last location for the {store} store.' => 'Dit is de laatste locatie voor de winkel {store}.', + 'This month' => 'Deze maand', + 'This order has unsaved changes.' => 'Deze bestelling heeft niet-opgeslagen wijzigingen.', + 'This week' => 'Deze week', + 'This year' => 'Dit jaar', + 'Times Used' => 'Aantal keren gebruikt', + 'Title' => 'Titel', + 'To' => 'Aan', + 'Today' => 'Vandaag', + 'Too many variants for this product.' => 'Te veel varianten voor dit product.', + 'Top Customers by Average Order' => 'Topklanten per gemiddelde bestelling', + 'Top Customers by Total Revenue' => 'Topklanten volgens totale omzet', + 'Top Customers' => 'Topklanten', + 'Top Product Types by Qty Sold' => 'Topproducttypen volgens verkochte hoeveelheid', + 'Top Product Types by Revenue' => 'Top-producttypen volgens omzet', + 'Top Product Types' => 'Top-producttypen', + 'Top Products by Qty Sold' => 'Topproducten volgens verkochte hoeveelheid', + 'Top Products by Revenue' => 'Topproducten volgens omzet', + 'Top Products' => 'Topproducten', + 'Top Purchasables by Qty Sold' => 'Top koopbare artikelen volgens verkochte hoeveelheid', + 'Top Purchasables by Revenue' => 'Top koopbare artikelen volgens omzet', + 'Top Purchasables' => 'Top van de koopbare artikelen', + 'Total ' => 'Totaal ', + 'Total Discount Use Limit' => 'Totale gebruikslimiet korting', + 'Total Discount' => 'Totale korting', + 'Total Included Tax' => 'Totaal inclusief belasting', + 'Total Orders by Billing Country' => 'Totaal aantal bestellingen per land van facturering', + 'Total Orders by Country' => 'Totaal aantal bestellingen per land', + 'Total Orders by Shipping Country' => 'Totaal aantal bestellingen per land van verzending', + 'Total Orders' => 'Totaal aantal bestellingen', + 'Total Paid' => 'Totaal betaald', + 'Total Price' => 'Totale prijs', + 'Total Qty' => 'Totaal aantal', + 'Total Revenue' => 'Totale omzet', + 'Total Shipping' => 'Totale verzendkosten', + 'Total Tax' => 'Totaal belasting', + 'Total Weight' => 'Totaal gewicht', + 'Total' => 'Totaal', + 'Track Inventory' => 'Voorraad bijhouden', + 'Transaction Hash' => 'Transactiehash', + 'Transaction ID' => 'Transactie-ID', + 'Transaction captured successfully: {message}' => 'Transactie succesvol vastgelegd: {message}', + 'Transaction refunded successfully: {message}' => 'Transactie succesvol terugbetaald: {message}', + 'Transactions' => 'Transacties', + 'Transfer Fields' => 'Overdrachtvelden', + 'Transfer Items' => 'Overdrachtsitems', + 'Transfer Settings' => 'Overdrachtsinstellingen', + 'Transfer Status' => 'Overdrachtsstatus', + 'Transfer fields saved.' => 'Overdrachtsvelden opgeslagen.', + 'Transfer must have at least one item.' => 'Overdracht moet minimaal één item bevatten.', + 'Transfer' => 'Overdracht', + 'Transfers' => 'Overdrachten', + 'Trial days credited' => 'Dagen voor proefversie gecrediteerd', + 'Trial expiration' => 'Proefperiode verlopen', + 'Trial expiry date' => 'Vervaldatum proefperiode', + 'Type not in allowed options.' => 'Type maakt geen deel uit van de toegestane opties.', + 'Type' => 'Type', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => 'Annulering van het abonnement is momenteel niet mogelijk.', + 'Unable to complete order: another request is already in progress.' => 'Kan bestelling niet voltooien: er loopt al een andere aanvraag.', + 'Unable to find variant.' => 'Kan variant niet vinden.', + 'Unable to generate coupon codes: {message}' => 'Kan couponcodes niet genereren: {message}', + 'Unable to make payment at this time.' => 'Betalen is momenteel niet mogelijk.', + 'Unable to modify subscription at this time.' => 'Wijzigen van het abonnement is momenteel niet mogelijk.', + 'Unable to reactivate subscription at this time.' => 'Opnieuw activeren van het abonnement is momenteel niet mogelijk.', + 'Unable to reassign orders.' => 'Kan bestellingen niet opnieuw toewijzen.', + 'Unable to remove order data.' => 'Kan bestelgegevens niet verwijderen.', + 'Unable to retrieve Sale and Purchasable.' => 'Aanbieding en koopbaar artikel ophalen niet mogelijk.', + 'Unable to retrieve cart.' => 'Winkelwagen ophalen is niet mogelijk.', + 'Unable to retrieve customer.' => 'Klant ophalen niet mogelijk.', + 'Unable to retrieve load cart URL' => 'Kan URL om de winkelwagen te laden niet ophalen', + 'Unable to retrieve payment source.' => 'Kan betaalbron niet ophalen.', + 'Unable to set default shipping category.' => 'Kan de standaard verzendcategorie niet instellen.', + 'Unable to set default tax category.' => 'Kan de standaard belastingcategorie niet instellen.', + 'Unable to set primary payment source.' => 'Kan primaire betaalbron niet instellen.', + 'Unable to start the subscription. Please check your payment details.' => 'Starten van het abonnement is niet mogelijk. Controleer uw betalingsgegevens.', + 'Unable to subscribe at this time.' => 'Abonneren is op dit moment niet mogelijk.', + 'Unable to update cart.' => 'Winkelwagen bijwerken is niet mogelijk.', + 'Unable to validate address.' => 'Kan adres niet valideren.', + 'Unit Price' => 'Eenheidsprijs', + 'Unit price (minus discounts)' => 'Eenheidsprijs (min kortingen)', + 'Units' => 'Eenheden', + 'Unpaid' => 'Niet-betaald', + 'Unsubscribe' => 'Afmelden', + 'Update Address' => 'Adres bijwerken', + 'Update Order Status' => 'Orderstatus bijwerken', + 'Update Order Status…' => 'Bestellingsstatus bijwerken ...', + 'Update order' => 'Bestelling bijwerken', + 'Update subscription' => 'Abonnement bijwerken', + 'Update' => 'Updaten', + 'Updated By' => 'Bijgewerkt door', + 'Updated committed stock successfully.' => 'Toegezegde voorraad bijgewerkt.', + 'Updated' => 'Bijgewerkt', + 'Use Billing Address For Tax' => 'Factuuradres gebruiken voor belasting', + 'Use as the primary billing address' => 'Gebruiken als primair factuuradres', + 'Use as the primary shipping address' => 'Gebruiken als primair verzendadres', + 'Used By Tax Rates' => 'Gebruikt door belastingtarieven', + 'Used by Tax Rates' => 'Gebruikt door belastingtarieven', + 'User Groups' => 'Gebruikersgroepen', + 'User not found.' => 'Gebruiker niet gevonden.', + 'User' => 'Gebruiker', + 'Uses' => 'Aantal gebruiken', + 'Validate Business Tax ID as Vat ID' => 'Fiscaal ondernemingsnummer valideren als btw-nummer', + 'Validating condition syntax' => 'Validatie voorwaardesyntaxis', + 'Validating formula syntax' => 'Validatie formulesyntaxis', + 'Variant Fields' => 'Variantvelden', + 'Variant Has Untracked Stock' => 'Variant heeft niet-bijgehouden voorraad', + 'Variant Price' => 'Variantprijs', + 'Variant SKU' => 'Variant-SKU', + 'Variant Search' => 'Variant zoeken', + 'Variant Stock' => 'Variantvoorraad', + 'Variant Title Format' => 'Variant titel formaat', + 'Variant Tracks Stock' => 'Voorraad van variant wordt bijgehouden', + 'Variant UI Label Format' => 'Variant UI-labelformaat', + 'Variant has no product.' => 'Variant heeft geen product.', + 'Variants not restored.' => 'Varianten niet hersteld.', + 'Variants restored.' => 'Varianten hersteld.', + 'Variants' => 'Varianten', + 'View customer' => 'Klant bekijken', + 'View order' => 'Bestelling bekijken', + 'View product type - {productType}' => 'Producttype bekijken - {productType}', + 'View user' => 'Gebruiker bekijken', + 'View' => 'Weergeven', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => 'Waarschuwing: door deze valuta te verwijderen worden alle betalingen en terugbetalingen in deze valuta gestopt. Weet u zeker dat u “{name}” wilt verwijderen?', + 'Web' => 'Web', + 'Webhook URL' => 'Webhook-URL', + 'Weight ({unit})' => 'Gewicht ({unit})', + 'Weight Rate' => 'Gewicht percentage', + 'Weight Unit' => 'Eenheid gewicht', + 'Weight' => 'Gewicht', + 'What product URIs should look like for the site.' => 'Hoe URI\'s van producten eruit moeten zien voor de website.', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Hoe de automatisch gegenereerde producttitels eruit moeten zien. U kunt tags bijvoegen die producteigenschappen uitvoeren, zoals {ex1} of {ex2}. Alle gebruikte aangepaste velden moeten worden ingesteld als verplicht.', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Hoe de automatisch gegenereerde variant titels eruit moeten zien. U kunt tags bijvoegen die eigenschappen van de variant uitzetten, zoals {ex1} of {ex2}. Alle aangepaste velden die gebruikt worden moeten worden ingesteld als vereist.', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => 'Hoe de pdf-bestandsnaam van de bestelling eruit moet zien (zonder extensie). U kunt tags toevoegen die eigenschappen van de bestelling weergeven, zoals {ex1} of {ex2}.', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'Hoe de unieke automatisch gegenereerde SKU\'s eruit moeten zien, wanneer een SKU veld wordt ingevoerd zonder waarde. U kunt tags bijvoegen die eigenschappen uitzetten, zoals {ex1} of {ex2}.', + 'What this PDF will be called in the control panel.' => 'De naam van deze pdf in het configuratiescherm.', + 'What this catalog pricing rule will be called in the control panel.' => 'De naam van deze catalogusprijsregel in het configuratiescherm.', + 'What this discount will be called in the control panel.' => 'Naam van deze korting in het configuratiescherm.', + 'What this email will be called in the control panel.' => 'De naam van dit e-mailbericht in het configuratiescherm.', + 'What this product type will be called in the control panel.' => 'Naam van dit producttype in het configuratiescherm.', + 'What this sale will be called in the control panel.' => 'De naam van deze verkoop in het configuratiescherm.', + 'What this shipping category will be called in the control panel.' => 'De naam van deze verzendcategorie in het configuratiescherm.', + 'What this shipping rule will be called in the control panel.' => 'De naam van deze verzendingsregel in het configuratiescherm.', + 'What this shipping zone will be called in the control panel.' => 'De naam van deze verzendingszone in het configuratiescherm.', + 'What this status will be called in the control panel.' => 'Naam van deze status in het configuratiescherm.', + 'What this subscription plan will be called in the control panel.' => 'De naam van dit abonnement in het configuratiescherm.', + 'What this tax category will be called in the control panel.' => 'De naam van deze belastingcategorie in het configuratiescherm.', + 'What this tax zone will be called in the control panel.' => 'De naam van deze belastingzone in het configuratiescherm.', + 'When this discount is applied to an order, which line items should be discounted?' => 'Wanneer deze korting wordt toegepast op een bestelling, op welke artikelen moet deze dan worden toegepast?', + 'Whether the first available shipping method option should be set automatically on carts.' => 'Of de eerste beschikbare verzendmethode automatisch moet worden ingesteld voor winkelwagens.', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'Of de primaire betaalbron van de gebruiker automatisch moet worden ingesteld voor nieuwe winkelwagens.', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'Of het primaire verzend- en factuuradres automatisch moeten worden ingesteld voor nieuwe winkelwagens.', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => 'Aanduiding of deze catalogusprijsregel beschikbaar moet zijn voor gebruik, ongeacht andere voorwaarden.', + 'Whether this sale should be available for use, regardless of other conditions.' => 'Aanduiding of deze verkoop beschikbaar moet zijn voor gebruik, ongeacht andere voorwaarden.', + 'Which data to display in the name column in the results table.' => 'Welke gegevens worden weergegeven in de naamkolom van de resultatentabel.', + 'Which product types should this category be available to?' => 'Voor welke producttypen moet deze categorie beschikbaar zijn?', + 'Which template should be loaded when a product’s URL is requested.' => 'De sjabloon die moet worden geladen bij het opvragen van de URL van een product.', + 'Width ({unit})' => 'Breedte ({unit})', + 'Width' => 'Breedte', + 'YYYY' => 'YYYY', + 'Yes' => 'Ja', + 'You are not allowed to add a line item.' => 'Het is niet toegestaan om een lijnitem toe te voegen.', + 'You currently have no emails configured to select for this status.' => 'U heeft momenteel geen e-mails geconfigureerd die u voor deze status kunt selecteren.', + 'You do not have permission to load this cart.' => 'U heeft geen rechten om deze winkelwagen te laden.', + 'You must set up at least one gateway that supports subscriptions first.' => 'U moet eerst minimaal één gateway instellen die abonnementen ondersteunt.', + 'You must be logged in or provide a valid token to load this cart.' => 'U moet ingelogd zijn of een geldig token verstrekken om deze winkelwagen te laden.', + 'You must be signed in to create a payment source.' => 'U moet zijn aangemeld om een betaalbron aan te maken.', + 'You must be signed in to set a primary payment source.' => 'U moet zijn aangemeld om een primaire betaalbron in te stellen.', + 'You must make a payment to complete the order.' => 'U moet een betaling verrichten om de bestelling te voltooien.', + 'Your Cart Recovery Link' => 'Uw link voor het herstellen van de winkelwagen', + 'Your Order PDF Download Link' => 'De pdf-downloadlink van uw bestelling', + 'Your order is empty' => 'Uw bestelling is leeg', + 'ZIP file' => 'ZIP-bestand', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'Nul - de minimumprijs is nul als kortingen hoger zijn dan de bestelwaarde.', + 'Zip Code' => 'Postcode', + 'all' => 'alle', + 'any' => 'elke', + 'average order total' => 'gemiddelde totaalprijs bestellingen', + 'billing address' => 'factuuradres', + 'donation' => 'donatie', + 'donations' => 'donaties', + 'info' => 'info', + 'inventory location' => 'voorraadlocatie', + 'new customers' => 'nieuwe klanten', + 'on hand' => 'aanwezig', + 'only' => 'enkel', + 'order' => 'bestelling', + 'orders' => 'bestellingen', + 'price' => 'prijs', + 'prices' => 'prijzen', + 'product variant' => 'productvariant', + 'product variants' => 'productvarianten', + 'product' => 'product', + 'products' => 'producten', + 'repeat customers' => 'terugkerende klanten', + 'shipping address' => 'verzendadres', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'shippingSameAsBilling en billingSameAsShipping kunnen niet beide worden ingesteld.', + 'subscription' => 'abonnement', + 'subscriptions' => 'abonnementen', + 'to' => 'aan', + 'transfer' => 'overdracht', + 'transfers' => 'overdrachten', + '{amount} included' => '{amount} inbegrepen', + '{count} Unfulfilled Orders' => '{count} onvervulde bestellingen', + '{description} is no longer available.' => '{description} is niet meer beschikbaar.', + '{description} only has {stock} in stock.' => '{description} heeft maar {stock} op voorraad.', + '{from} to {to}' => '{from} naar {to}', + '{name} (Primary)' => '{name} (primair)', + '{name} (Trashed)' => '{name} (verwijderd)', + '{name} catalog price' => 'Catalogusprijs {name}', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, =1{bestelling} other{bestellingen}} bijgewerkt.', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, one {}=1{bestelling is} other{bestellingen zijn}} geassocieerd met de {numUsers, plural, one {}=1{gebruiker} other{gebruikers}}.', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, one {}=1{abonnement is} other{abonnementen zijn}} geactiveerd voor de {numUsers, plural, one {}=1{gebruiker} other{gebruikers}}.', + '{number} more…' => '{number} extra...', + '{pct} off the discounted item price' => '{pct} korting op de itemprijs met korting', + '{pct} off the original item price' => '{pct} korting op de oorspronkelijke itemprijs', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, one {}=1{is} other{zijn}} niet toegevoegd aan een site.', + '{total} in total revenue' => '{total} aan totale omzet', + '{total} orders' => '{total} bestellingen', + '{total} saleable across {locationCount} location(s)' => '{total} verkoopbaar op {locationCount} locatie(s)', + '{uses} uses across {emails} email addresses' => '{uses} gebruiksinstanties voor {emails} e-mailadressen', + '{uses} uses across {users} users' => '{uses} gebruiken voor {users} gebruikers', + '“{description}” is currently out of stock.' => '“{description}” is momenteel niet voorradig.', + '“{key}” has invalid JSON' => '“{key}” bevat ongeldige JSON', +]; diff --git a/lang/pt/commerce.php b/lang/pt/commerce.php new file mode 100644 index 0000000000..5f9f917213 --- /dev/null +++ b/lang/pt/commerce.php @@ -0,0 +1,1423 @@ + '(novo preço)', + '(of original price)' => '(do preço original)', + '(off original price)' => '(de desconto no preço original)', + 'A cart number must be specified.' => 'Deve ser especificado um número de carrinho.', + 'A cart recovery link has been sent to {email}.' => 'Foi enviado um link para recuperar o carrinho para {email}.', + 'A cart recovery link will be sent to {email}.' => 'Será enviado um link para recuperar o carrinho para {email}.', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'Um número de referência amigável será gerado com base neste formato quando o carrinho for convertido num pedido. Por exemplo {ex1}, ou
{ex2}. O resultado deste formato deve ser único.', + 'A new download link has been sent to {email}' => 'Um novo link para download foi enviado para {email}', + 'A new download link will be sent to {email}' => 'Um novo link para download será enviado para {email}', + 'A valid email is required to create a customer.' => 'É necessário um email válido para criar um cliente.', + 'Accept' => 'Aceitar', + 'Accepted' => 'Aceite', + 'Actions' => 'Ações', + 'Active Carts' => 'Carrinhos Ativos', + 'Active subscriptions' => 'Subscrições ativas', + 'Active' => 'Ativo', + 'Add Address' => 'Adicionar endereço', + 'Add a coupon' => 'Adicionar um cupão', + 'Add a custom line item' => 'Adicionar um item de linha personalizado', + 'Add a line item' => 'Adicionar um item de linha', + 'Add a product' => 'Adicionar um produto', + 'Add a variant' => 'Adicionar um variante', + 'Add an adjustment' => 'Adicionar um ajuste', + 'Add an item' => 'Adicionar um item', + 'Add an option' => 'Adicionar uma opção', + 'Add catalog price' => 'Adicionar preço de catálogo', + 'Add' => 'Adicionar', + 'Additional Actions' => 'Ações adicionais', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'Destinatários adicionais que devem receber este email. O código Twig pode ser usado aqui.', + 'Address 1' => 'Endereço 1', + 'Address 2' => 'Endereço 2', + 'Address 3' => 'Endereço 3', + 'Address Line 1' => 'Linha de Endereço 1', + 'Address Line 2' => 'Endereço linha 2', + 'Address Updated.' => 'Endereço atualizado.', + 'Address copied to user.' => 'Endereço copiado para o utilizador.', + 'Address not found.' => 'Endereço não encontrado.', + 'Adjust Quantity' => 'Ajustar a quantidade', + 'Adjust by' => 'Ajustar por', + 'Adjust price when included rate is disqualified?' => 'Ajustar o preço quando a tarifa incluída for desqualificada?', + 'Adjustments' => 'Ajustes', + 'Admin Notices' => 'Avisos da administração', + 'Administrative Area Code of Origin' => 'Código da área administrativa de origem', + 'Advanced' => 'Avançado', + 'All Orders' => 'Todos os Pedidos', + 'All Totals' => 'Todos os totais', + 'All Transfers' => 'Todas as transferências', + 'All active subscriptions' => 'Todas as subscrições ativas', + 'All customers' => 'Todos os clientes', + 'All products' => 'Todos os produtos', + 'All variants must have a SKU.' => 'Todas as variantes devem ter um SKU.', + 'All' => 'Tudo', + 'Allow Checkout Without Payment' => 'Permitir checkout sem pagamento', + 'Allow Empty Cart On Checkout' => 'Permitir carrinho vazio no checkout', + 'Allow Partial Payment On Checkout' => 'Permitir pagamento parcial no checkout', + 'Allow out of stock purchases' => 'Permitir compras fora de stock', + 'Allow' => 'Permitir', + 'Allowed Qty' => 'Qntd Permitida', + 'Alternative Phone' => 'Telefone alternativo', + 'Amount' => 'Valor', + 'An ID must be provided' => 'Deve ser fornecida uma identificação', + 'An error occurred while generating this PDF.' => 'Ocorreu um erro ao gerar este PDF.', + 'Any' => 'Qualquer', + 'Anywhere' => 'Qualquer sítio', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => 'Tem a certeza de que pretende arquivar o plano de subscrição “{name}”? NÃO IRÁ cancelar as subscrições existentes.', + 'Are you sure you want to capture this transaction?' => 'Tem certeza que deseja capturar essa transação?', + 'Are you sure you want to complete this order?' => 'Tem certeza de que deseja concluir este pedido?', + 'Are you sure you want to delete the selected orders?' => 'Tem a certeza que quer eliminar os pedidos selecionados?', + 'Are you sure you want to delete the selected product and its variants?' => 'Tem a certeza que quer eliminar o produto selecionado e seus variantes?', + 'Are you sure you want to delete this shipping rule?' => 'Tem a certeza de que pretende eliminar esta regra de transporte?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => 'Tem certeza que você quer deletar “{name}” e todos os seus produtos? Por favor, faça um backup do seu banco de dados antes de realizar essa ação destrutiva.', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => 'Tem a certeza que quer eliminar "{name}"? Isto definirá todos os itens de linha com este estado para sem estado.', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'Tem a certeza de que deseja marcar esta transferência como pendente? Isto será mostrado como a entrar no destino.', + 'Are you sure you want to overwrite the billing address?' => 'Tem a certeza que deseja substituir este endereço de faturação?', + 'Are you sure you want to overwrite the shipping address?' => 'Tem a certeza que deseja substituir este endereço de envio?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'Tem a certeza de que quer eliminar permanentemente esta loja e tudo o que nela se encontra?', + 'Are you sure you want to refund this transaction?' => 'Tem certeza que você deseja estornar essa transação?', + 'Are you sure you want to remove this customer?' => 'Tem a certeza que deseja eliminar este cliente?', + 'Are you sure you want to save this as a new shipping rule?' => 'Tem a certeza de que pretende guardar esta nova regra de transporte?', + 'Are you sure you want to send email: {name}?' => 'Tem a certeza de que deseja enviar o email: {name}?', + 'At least one site must be enabled for the product type.' => 'Pelo menos um site deve estar ativo para o tipo de produto.', + 'Attempted Payments' => 'Tentativas de pagamento efetuadas', + 'Attention' => 'Atenção', + 'Authorize Only (Manually Capture)' => 'Apenas Autorizar (Capturar Manualmente)', + 'Auto Set Cart Shipping Method Option' => 'Opção de método de envio do carrinho de compras definido automaticamente', + 'Auto Set New Cart Addresses' => 'Definir automaticamente novos endereços de carrinho de compras', + 'Auto Set Payment Source' => 'Definição automática da fonte de pagamento', + 'Automatic SKU Format' => 'Formato SKU Automático', + 'Available Shipping Categories' => 'Categorias de Envio Disponíveis', + 'Available Tax Categories' => 'Categorias de Tributos Disponíveis', + 'Available for purchase' => 'Disponível para compra', + 'Available for purchase?' => 'Disponível para compra?', + 'Available inventory for "{description}" has gone below zero.' => 'O stock disponível de "{description}" ficou abaixo de zero.', + 'Available to Product Types' => 'Disponível para Tipos de Produtos', + 'Available' => 'Disponível', + 'Available?' => 'Disponível?', + 'Average Order Total' => 'Total médio de pedidos', + 'Average' => 'Média', + 'BCC’d Recipient' => 'Cópia oculta para', + 'Bad Request' => 'Pedido inválido', + 'Bad address ID.' => 'ID do endereço inválida.', + 'Bad order ID.' => 'ID de pedido inválido.', + 'Base Price' => 'Preço de base', + 'Base Promotional Price' => 'Preço promocional de base', + 'Base Rate' => 'Custo Base', + 'Base' => 'Base', + 'Bcc' => 'Cco', + 'Billing Address' => 'Endereço de Cobrança', + 'Billing Business Name' => 'Nome da Empresa para Cobrança', + 'Billing First Name' => 'Primeiro nome de Cobrança', + 'Billing Full Name' => 'Nome Completo de Cobrança', + 'Billing Last Name' => 'Último nome de Cobrança', + 'Billing address required.' => 'É necessário o endereço de faturação.', + 'Billing detail update URL' => 'URL de atualização de detalhes de faturação', + 'Billing issues' => 'Questões de faturação', + 'Billing' => 'Faturação', + 'Both (Line item price + Line item shipping costs)' => 'Ambos (preço do item individual + custos de envio do item individual)', + 'Business ID' => 'CNPJ', + 'Business Name' => 'Nome da Empresa', + 'Business Tax ID' => 'CNPJ da Empresa', + 'CC’d Recipient' => 'Destinatário de CC', + 'CVV' => 'CVV', + 'Can be used as an internal reference.' => 'Pode ser utilizado como referência de intervalo.', + 'Can not complete payment for missing transaction.' => 'Não é possível completar o pagamento para a transação não encontrada.', + 'Can not create a new order' => 'Não é possível criar um novo pedido', + 'Can not find an order to pay.' => 'Não foi possível encontrar um pedido por pagar.', + 'Can not find enabled email.' => 'Não foi possível encontrar o email ativo.', + 'Can not find order' => 'Não foi possível encontrar o pedido', + 'Can not find order.' => 'Não foi possível encontrar o pedido.', + 'Can not find the transaction to refund' => 'Não foi possível encontrar a transação a reembolsar', + 'Can not move between these inventory types.' => 'Não é possível mover entre estes tipos de inventário.', + 'Can not refund amount greater than the remaining amount' => 'Não é possível reembolsar uma quantia superior ao valor restante', + 'Cancel subscription' => 'Cancelar subscrição', + 'Cancel with gateway now' => 'Cancelar agora através do gateway', + 'Cancel' => 'Cancelar', + 'Cancellation date' => 'Data de cancelamento', + 'Cancellation' => 'Cancelamento', + 'Cannot switch plans for this subscription.' => 'Não foi possível mudar de plano para esta subscrição.', + 'Can’t preview this email.' => 'Não é possível pré-visualizar este email.', + 'Capture payment' => 'Capturar pagamento', + 'Capture' => 'Capturar', + 'Card Holder' => 'Titular do cartão', + 'Card Number' => 'Número do Cartão', + 'Card' => 'Cartão', + 'Cart Recovery Link' => 'Link para recuperar o carrinho', + 'Cart forgotten.' => 'Carrinho esquecido.', + 'Cart updated.' => 'Carrinho atualizado.', + 'Cart {number}' => 'Carrinho {number}', + 'Catalog Pricing Rule' => 'Regra de determinação de preços de catálogo', + 'Catalog pricing rule description.' => 'Descrição da regra de cálculo do preço de catálogo.', + 'Catalog pricing rule saved.' => 'Regra de determinação de preços de catálogo guardada.', + 'Catalog pricing rules deleted.' => 'Regras de fixação de preços de catálogo suprimidas.', + 'Catalog pricing rules updated.' => 'Regras de fixação de preços do catálogo atualizadas.', + 'Categories Relationship Type' => 'Tipo de relação das categorias', + 'Categories' => 'Categorias', + 'Category Rate Overrides' => 'Sobreposições à Categoria de Tributo', + 'Centimeters (cm)' => 'Centímetros (cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'Alterar este valor pode afetar a sua capacidade de reembolsar transações existentes.', + 'Choose a color to represent the order’s status' => 'Escolha uma cor para representar o estado do pedido', + 'Choose a new customer' => 'Escolha um novo cliente', + 'Choose adjustment values to include when calculating the product revenue total.' => 'Escolha os valores de ajuste a serem incluídos no cálculo da receita total do produto.', + 'Choose the currency’s ISO code.' => 'Escolha o código ISO da moeda.', + 'Choose the destination inventory location for the existing on hand stock.' => 'Selecione o local de destino do inventário para o stock disponível existente.', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'Escolha em que sites este tipo de produto deverá estar disponível e configure as definições específicas do site.', + 'City' => 'Cidade', + 'Clear counter' => 'Limpar contador', + 'Clear notices' => 'Limpar os avisos', + 'Close' => 'Fechar', + 'Code' => 'Código', + 'Collated PDF' => 'PDF agrupado', + 'Color' => 'Cor', + 'Commerce Products' => 'Produtos do Commerce', + 'Commerce Settings' => 'Configurações do Commerce', + 'Commerce Variants' => 'Variantes comerciais', + 'Commerce email “{email}” could not be sent for order “{order}”.' => 'Não foi possível enviar o email comercial “{email}” para o pedido “{order}”.', + 'Commerce order exports' => 'Exportações de encomendas comerciais', + 'Commerce' => 'Commerce', + 'Committed' => 'Comprometido', + 'Completed Email' => 'E-mail completo', + 'Completed' => 'Concluído', + 'Completing order failed.' => 'Erro ao concluir o pedido.', + 'Condition' => 'Condição', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'As condições são comparadas com uma ordem antes de examinar as regras. É útil para qualificar antecipadamente a disponibilidade de um método ou se houver condições comuns a todas as regras para esse método.', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'As condições aqui são comparadas com o cliente do pedido antes de consultar as regras. Isso é útil se quiser qualificar a disponibilidade de um método antecipadamente, ou se houver condições comuns a todas as regras para esse método.', + 'Conditions' => 'Condições', + 'Contains Purchasables' => 'Contém artigos de compra', + 'Control Panel Settings' => 'Definições do painel de controlo', + 'Control panel' => 'Painel de controlo', + 'Conversion Rate' => 'Taxa de Conversão', + 'Converted Price' => 'Preço convertido', + 'Copied!' => 'Copiado!', + 'Copy the URL' => 'Copiar a URL', + 'Copy to {location}' => 'Copiar para {location}', + 'Copy' => 'Copiar', + 'Costs' => 'Custos', + 'Could not archive gateway.' => 'Não foi possível arquivar o gateway.', + 'Could not cancel “{reference}”.' => 'Não foi possível cancelar “{reference}”.', + 'Could not create the payment source.' => 'Não foi possível criar a fonte de pagamento.', + 'Could not delete shipping rule' => 'Não foi possível eliminar a regra de envio', + 'Could not delete shipping zone' => 'Não foi possível eliminar a zona de envio', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => 'Não foi possível eliminar {count, number} {count, plural, one{categoria} other{categorias}} de envio.', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => 'Não foi possível eliminar {count, number} {count, plural, one{método} other{métodos}} e regras de envio.', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => 'Não foi possível eliminar {count, number} {count, plural, one{categoria} other{categorias}} de imposto.', + 'Could not find the email or template.' => 'Não foi possível encontrar o email ou o modelo.', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => 'Não foi possível assinalar a encomenda {number} como concluída. Erro ao guardar a encomenda durante a conclusão da encomenda com erros: {order}', + 'Could not reactivate “{reference}”.' => 'Não foi possível reativar “{reference}”.', + 'Could not send email' => 'Não foi possível enviar o email', + 'Could not switch “{reference}” to “{plan}”.' => 'Não foi possível mudar “{reference}” para “{plan}”.', + 'Could not update orders address.' => 'Não foi possível atualizar o endereço dos pedidos.', + 'Couldn’t archive Line Item Status.' => 'Não foi possível arquivar o status do item de linha.', + 'Couldn’t archive Order Status.' => 'Não foi possível arquivar o estado do pedido.', + 'Couldn’t capture transaction.' => 'Não foi possível efetuar a transação.', + 'Couldn’t capture transaction: {message}' => 'Não foi possível efetuar a transação: {message}', + 'Couldn’t delete email.' => 'Não foi possível apagar o e-mail.', + 'Couldn’t delete the payment source.' => 'Não foi possível eliminar a fonte de pagamento.', + 'Couldn’t get order.' => 'Não foi possível obter o pedido.', + 'Couldn’t recalculate order.' => 'Não foi possível recalcular o pedido.', + 'Couldn’t refund transaction.' => 'Não foi possível reembolsar a transação.', + 'Couldn’t refund transaction: {message}' => 'Não foi possível reembolsar a transação: {message}', + 'Couldn’t reorder Line Item Statuses.' => 'Não foi possível reordenar os status de itens de linha.', + 'Couldn’t reorder Order Statuses.' => 'Não foi possível reordenar os Status de Pedido.', + 'Couldn’t reorder PDFs.' => 'Não foi possível reordenar os PDFs.', + 'Couldn’t reorder discounts.' => 'Não foi possível reordenar os descontos.', + 'Couldn’t reorder gateways.' => 'Não foi possível reordenar os gateways.', + 'Couldn’t reorder plans.' => 'Não foi possível pedir novamente os planos.', + 'Couldn’t reorder rules.' => 'Não foi possível reordenar as regras.', + 'Couldn’t reorder sale.' => 'Não foi possível voltar a encomendar a promoção.', + 'Couldn’t reorder sales.' => 'Não foi possível reordenar as ofertas.', + 'Couldn’t reorder statuses.' => 'Não foi possível reordenar os estados.', + 'Couldn’t reorder stores.' => 'Não foi possível voltar a pedir de lojas.', + 'Couldn’t save PDF.' => 'Não foi possível guardar o PDF.', + 'Couldn’t save catalog pricing rule.' => 'Não foi possível guardar a regra de fixação de preços do catálogo.', + 'Couldn’t save currency.' => 'Não foi possível guardar a moeda.', + 'Couldn’t save discount.' => 'Não foi possível guardar o desconto.', + 'Couldn’t save email.' => 'Não foi possível guardar o e-mail.', + 'Couldn’t save gateway.' => 'Não foi possível guardar o gateway.', + 'Couldn’t save inventory location.' => 'Não foi possível guardar a localização do inventário.', + 'Couldn’t save line item status.' => 'Não foi possível guardar o status do item de linha.', + 'Couldn’t save order fields.' => 'Não foi possível guardar os campos do pedido.', + 'Couldn’t save order status.' => 'Não foi possível guardar o status do pedido.', + 'Couldn’t save order.' => 'Não foi possível guardar o pedido.', + 'Couldn’t save product type.' => 'Não foi possível guardar o tipo de produto.', + 'Couldn’t save sale.' => 'Não foi possível guardar a oferta.', + 'Couldn’t save settings.' => 'Não foi possível guardar as definições.', + 'Couldn’t save shipping category.' => 'Não foi possível guardar a categoria de envio.', + 'Couldn’t save shipping method.' => 'Não foi possível guardar o método de envio.', + 'Couldn’t save shipping rule.' => 'Não foi possível guardar a regra de envio.', + 'Couldn’t save shipping zone.' => 'Não foi possível guardar a zona de envio.', + 'Couldn’t save store.' => 'Não foi possível guardar a loja.', + 'Couldn’t save subscription fields.' => 'Não foi possível guardar os campos de subscrição.', + 'Couldn’t save subscription plan.' => 'Não foi possível guardar o plano de subscrição.', + 'Couldn’t save subscription.' => 'Não foi possível guardar a subscrição.', + 'Couldn’t save tax category.' => 'Não foi possível guardar esta categoria de imposto.', + 'Couldn’t save tax rate.' => 'Não foi possível guardar a taxa de imposto.', + 'Couldn’t save tax zone.' => 'Não foi possível guardar a zona fiscal.', + 'Couldn’t save transfer fields.' => 'Não foi possível guardar os campos da transferência.', + 'Couldn’t update catalog pricing rule statuses.' => 'Não foi possível atualizar o estado das regras de fixação de preços do catálogo.', + 'Couldn’t update status.' => 'Não foi possível atualizar o estado.', + 'Couldn’t updated sales status.' => 'Não foi possível atualizar o status das ofertas.', + 'Country Code of Origin' => 'Código do país de origem', + 'Country List' => 'Lista de países', + 'Country not allowed.' => 'O país não é permitido.', + 'Country' => 'País', + 'Coupon Code' => 'Cupom de Desconto', + 'Coupon can not apply discount to this order due to address mismatch.' => 'O cupão não consegue aplicar desconto a este pedido devido a incompatibilidade de endereço.', + 'Coupon can not apply discount to this order due to customer mismatch.' => 'O cupão não consegue aplicar desconto a este pedido devido a incompatibilidade com o cliente.', + 'Coupon can not apply discount to this order.' => 'O cupão não consegue aplicar desconto a este pedido.', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'O código de cupão “{code}” já está a ser utilizado pelo desconto “{name}”.', + 'Coupon codes cannot be blank.' => 'Os códigos do cupão não podem ficar em branco.', + 'Coupon codes must be unique.' => 'Os códigos de cupão devem ser únicos.', + 'Coupon format is required and must contain at least one `#`.' => 'O formato do cupão é obrigatório e deve conter pelo menos um `#`.', + 'Coupon not valid.' => 'Cupão inválido.', + 'Coupon removed: {explanation}' => 'Cupão removido: {explanation}', + 'Coupons' => 'Cupões', + 'Craft Commerce - Administration' => 'Craft Commerce - Administração', + 'Craft Commerce - Inventory' => 'Craft Commerce - Inventário', + 'Craft Commerce - Orders' => 'Craft Commerce - Pedidos', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce - Tipo de produto - {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce - Subscrições', + 'Create a Discount' => 'Criar um Desconto', + 'Create a Subscription Plan' => 'Criar um plano de subscrição', + 'Create a new PDF' => 'Criar um novo PDF', + 'Create a new catalog pricing rule' => 'Criar uma nova regra de determinação de preços do catálogo', + 'Create a new currency' => 'Criar nova moeda', + 'Create a new email' => 'Criar um novo e-mail', + 'Create a new gateway' => 'Criar um novo gateway', + 'Create a new line item status' => 'Criar um novo status de item de linha', + 'Create a new order status' => 'Criar um novo status de pedido', + 'Create a new product type' => 'Criar um novo tipo de produto', + 'Create a new sale' => 'Criar nova oferta', + 'Create a new shipping category' => 'Criar uma nova categoria de envio', + 'Create a new shipping method' => 'Criar um novo método de envio', + 'Create a new shipping rule' => 'Criar uma nova regra de envio', + 'Create a new tax category' => 'Criar uma nova categoria de tributos', + 'Create a new tax rate' => 'Criar uma nova taxa do imposto', + 'Create a product type' => 'Criar um tipo de produto', + 'Create a shipping zone' => 'Criar nova zona de envio', + 'Create a tax zone' => 'Criar uma zona fiscal', + 'Create catalog pricing rules' => 'Criar regras de determinação do preço do catálogo', + 'Create customer: “{email}”' => 'Criar cliente: "{email}"', + 'Create discounts' => 'Criar descontos', + 'Create discount…' => 'Criar desconto…', + 'Create rules that allow this discount to match the order.' => 'Criar regras que permitam que este desconto corresponda ao pedido.', + 'Create rules that allow this discount to match the order’s billing address.' => 'Criar regras que permitam que este desconto corresponda ao endereço de cobrança do pedido.', + 'Create rules that allow this discount to match the order’s customer.' => 'Criar regras que permitam que este desconto corresponda ao pedido do cliente.', + 'Create rules that allow this discount to match the order’s shipping address.' => 'Criar regras que permitam que este desconto corresponda ao endereço de envio do pedido.', + 'Create rules that allow this gateway to match the billing address.' => 'Crie regras que permitam que este gateway corresponda ao endereço de faturação.', + 'Create rules that allow this gateway to match the order.' => 'Crie regras que permitam que este gateway corresponda ao pedido.', + 'Create rules that allow this gateway to match the shipping address.' => 'Crie regras que permitam que este gateway corresponda à morada de entrega.', + 'Create sales' => 'Criar ofertas', + 'Create sale…' => 'Criar oferta…', + 'Created' => 'Criados', + 'Credit Card Payment Type' => 'Tipo de Modalidade do Cartão de Crédito', + 'Currency Code' => 'Código da Moeda', + 'Currency saved.' => 'Moeda guardada.', + 'Currency' => 'Moeda', + 'Current' => 'Atual', + 'Custom 1' => 'Personalizado 1', + 'Custom 2' => 'Personalizado 2', + 'Custom 3' => 'Personalizado 3', + 'Custom 4' => 'Personalizado 4', + 'Custom' => 'Personalizado', + 'Customer Enabled?' => 'Habilitado para Clientes?', + 'Customer ID is required.' => 'A ID do cliente é obrigatória.', + 'Customer Note' => 'Nota de cliente', + 'Customer Notices' => 'Avisos do cliente', + 'Customer data' => 'Dados dos clientes', + 'Customer' => 'Cliente', + 'Damaged' => 'Danificado', + 'Data shown might be outdated.' => 'Os dados apresentados podem estar desatualizados.', + 'Date Authorized' => 'Data da autorização', + 'Date Created' => 'Data de Criação', + 'Date First Paid' => 'Data do primeiro pagamento', + 'Date Ordered' => 'Data do Pedido', + 'Date Paid' => 'Data de Pagamento', + 'Date Updated' => 'Data Atualizada', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'Data a partir da qual a regra de determinação do preço do catálogo estará ativa. Deixe em branco para uma data de início ilimitada', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'Data a partir da qual o desconto estará ativo. Deixe em branco para data de início não limitada', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'Data a partir da qual essa oferta estará ativa. Deixe em branco para data de início não limitada', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'Data em que a regra de determinação do preço do catálogo será concluída. Deixe em branco para uma data final ilimitada', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'Data na qual o desconto terminará. Deixe em branco para data final indefinida', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'Data em que a oferta termina. Deixe em branco para prazo final indeterminado.', + 'Date' => 'Data', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'Padrão - permite que o preço seja negativo se os descontos forem maiores do que o valor do pedido.', + 'Default Category' => 'Categoria padrão', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'Visualização padrão do painel de controlo do Commerce. Se o utilizador não tiver permissão, voltará a um local a que possa aceder.', + 'Default Order PDF' => 'PDF de pedido padrão', + 'Default Per Item Rate' => 'Taxa padrão por item', + 'Default Percentage Rate' => 'Taxa percentual padrão', + 'Default Status?' => 'Status Padrão?', + 'Default View' => 'Visão padrão', + 'Default Weight Rate' => 'Taxa padrão de peso', + 'Default Zone' => 'Zona Padrão', + 'Default status?' => 'Estado padrão?', + 'Default to this tax zone when no billing address is set' => 'Predefinir esta zona de imposto quando não for definido um endereço de faturação', + 'Default to this tax zone when no shipping address is set' => 'Zona de tributos padrão para quando nenhum endereço de entrega esteja definido', + 'Default variant updated.' => 'Variante predefinida atualizada.', + 'Default' => 'Padrão', + 'Default?' => 'Padrão?', + 'Delete catalog pricing rules' => 'Eliminar regras de determinação de preços do catálogo', + 'Delete discounts' => 'Eliminar descontos', + 'Delete orders' => 'Eliminar pedidos', + 'Delete sales' => 'Eliminar ofertas', + 'Delete' => 'Deletar', + 'Deleting the {location} location.' => 'Eliminar a localização {location}.', + 'Describe this rule.' => 'Descreva essa regra.', + 'Describe this shipping zone.' => 'Descreva sua zona de envio.', + 'Describe this tax zone.' => 'Descreva essa zona de tributos.', + 'Description' => 'Descrição', + 'Destination Inventory Location' => 'Local de destino do inventário', + 'Destination' => 'Destino', + 'Details' => 'Detalhes', + 'Dimension Unit' => 'Unidade de Dimensão', + 'Dimensions' => 'Dimensões', + 'Disabled' => 'Desabilitado', + 'Disallow' => 'Proibir', + 'Discount all line items' => 'Descontar todos os itens de linha', + 'Discount description.' => 'Descrição do desconto.', + 'Discount is not allowed for the order' => 'Desconto não permitido para o pedido', + 'Discount is out of date.' => 'O desconto está desatualizado.', + 'Discount saved.' => 'Desconto guardado.', + 'Discount the matching items only' => 'Descontar apenas os itens correspondentes', + 'Discount use has reached its limit.' => 'A utilização do desconto atingiu o limite.', + 'Discount' => 'Desconto', + 'Discounted Item Subtotal' => 'Subtotal do artigo com desconto', + 'Discounted Items' => 'Artigos com desconto', + 'Discounts deleted.' => 'Descontos eliminados.', + 'Discounts reordered.' => 'Descontos reordenados.', + 'Discounts updated.' => 'Descontos atualizados.', + 'Discounts' => 'Descontos', + 'Disqualify with valid business tax ID?' => 'Desqualificar com ID fiscal comercial válida?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'Não aplicar vendas correspondentes subsequentes além da aplicação desta venda.', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => 'Não aplicar esta taxa se o endereço do pedido tiver qualquer um dos IDs de imposto comerciais válidos selecionados.', + 'Do not attach a PDF to this email' => 'Não anexe um PDF a este email', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'Não chame o recálculo no pedido (Número: {orderNumber}) se houver erros.', + 'Donation can not be zero.' => 'A doação não pode ser zero.', + 'Donation needs to be an amount.' => 'A doação tem de ser uma quantia.', + 'Donation settings saved.' => 'Definições de doações guardadas.', + 'Donation' => 'Doação', + 'Donations' => 'Doações', + 'Done' => 'Concluído', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'Não aplicar nenhum desconto subsequente a um pedido caso esse desconto seja aplicado', + 'Download PDF' => 'Baixar PDF', + 'Download PDF…' => 'Transferir PDF…', + 'Download Type' => 'Tipo de transferência', + 'Download' => 'Transferência', + 'Draft' => 'Rascunho', + 'Dummy gateway payment failed.' => 'O pagamento do gateway fictício falhou.', + 'Duplicate options exist' => 'Existem opções duplicadas', + 'Duration' => 'Duração', + 'EU VAT ID' => 'ID de NIF da UE', + 'Edit address' => 'Editar Endereço', + 'Edit adjustments' => 'Editar ajustes', + 'Edit catalog pricing rules' => 'Editar regras de determinação de preços do catálogo', + 'Edit discounts' => 'Editar descontos', + 'Edit options' => 'Editar opções', + 'Edit orders' => 'Editar pedidos', + 'Edit sales' => 'Editar ofertas', + 'Edit' => 'Editar', + 'Effect' => 'Efeito', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'Qualquer (Padrão) - O campo de relação está no produto para compra ou na categoria', + 'Either way' => 'Ambas', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'Erro de geração de email com PDF para o email “{email}”. Pedido: “{order}”. Erro de modelo de PDF: “{message}” {file}:{line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'O modelo do PDF de email não existe em “{templatePath}” para o email “{email}”. Encomenda: “{order}”.', + 'Email Subject' => 'Assunto do E-mail', + 'Email error. No email address found for order. Order: “{order}”' => 'Erro de e-mail. Não foi encontrado um endereço de e-mail para o pedido. Pedido: “{order}”', + 'Email is not enabled.' => 'O email não está ativo.', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'O modelo de email de texto simples não existe em “{templatePath}” o que resultou em “{templateParsedPath}” para o email “{email}”. Pedido: “{order}”.', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erro de análise de modelo de email de texto simples para o email “{email}”. Pedido: “{order}”. Erro do modelo: “{message}” {file}:{line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erro de análise de caminho de modelo de email de texto simples para o email “{email}” em “Caminho de modelo:”. Pedido: “{order}”. Erro do modelo: “{message}” {file}:{line}', + 'Email required to make payments on a completed order.' => 'Email necessário para fazer pagamentos num pedido concluído.', + 'Email saved.' => 'Email guardado.', + 'Email sent' => 'Email enviado', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'O modelo de email não existe em “{templatePath}” o que resultou em “{templateParsedPath}” para o email “{email}”. Encomenda: “{order}”.', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erro de análise de email personalizado para o email “{email}” em “Para:”. Pedido: “{order}”. Erro do modelo: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erro de análise de modelo de email para o email “{email}” em “BCC:”. Pedido: “{order}”. Erro do modelo: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erro de análise de modelo de email para o email “{email}” em “CC:”. Pedido: “{order}”. Erro do modelo: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erro de análise de modelo de email para o email “{email}” em “ReplyTo:”. Pedido: “{order}”. Erro do modelo: “{message}” {file}:{line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erro de análise de modelo de email para o email “{email}” em “Assunto:”. Pedido: “{order}”. Erro do modelo: “{message}” {file}:{line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erro de análise de modelo de email para o email “{email}”. Pedido: “{order}”. Erro do modelo: “{message}” {file}:{line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Erro de análise de caminho de modelo de email para o email “{email}” em “Caminho de modelo:”. Pedido: “{order}”. Erro do modelo: “{message}” {file}:{line}', + 'Email unavailable.' => 'E-mail indisponível.', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => 'Não foi possível enviar o email “{email}” para o pedido “{order}”. Erro: {error} {file}:{line}', + 'Email “{email}” for order {order} was cancelled.' => 'O email “{email}” do pedido {order} foi cancelado.', + 'Email' => 'E-mail', + 'Emails' => 'E-mails', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'Ativar se esta taxa deve ser incorporada ao preço do assunto tributável em vez de adicionar um custo ao pedido.', + 'Enable structure for products of this type' => 'Ativar estrutura para produtos deste tipo', + 'Enable this discount' => 'Habilitar esse desconto', + 'Enable this rule' => 'Ativar esta regra', + 'Enable this sale' => 'Habilitar essa oferta', + 'Enable this shipping method on the front end' => 'Habilitar esse método de envio de publicamente', + 'Enable this shipping rule' => 'Habilitar essa regra de envio', + 'Enable this tax rate' => 'Ativar esta taxa de imposto', + 'Enabled for customers to select during checkout?' => 'Habilitar para seleção por clientes durante a compra?', + 'Enabled for customers to select?' => 'Ativado para seleção por parte dos clientes?', + 'Enabled' => 'Habilitado', + 'Enabled?' => 'Habilitado?', + 'End Date' => 'Data Final', + 'Enter SKU' => 'Insira o SKU', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'Insira um nome simples para esta taxa de imposto para ser usada no painel de controlo.', + 'Enter a percentage like {ex1} or {ex2}.' => 'Insira uma percentagem como {ex1} ou {ex2}.', + 'Enter coupon code' => 'Inserir o código do cupão', + 'Enter reference' => 'Inserir referência', + 'Error refunding transaction: {transactionHash}' => 'Erro ao reembolsar a transação: {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'Cada nova loja deve ser atribuída a pelo menos um local.', + 'Everywhere' => 'Em todo o lado', + 'Example' => 'Exemplo', + 'Exclude this discount for products that are already on promotion' => 'Excluir este desconto para produtos que já estejam em promoção', + 'Expired Link' => 'Link expirado', + 'Expired' => 'Expirado', + 'Expiry Date' => 'Data de Expiração', + 'Expiry date' => 'Data de validade', + 'Expiry' => 'Validade', + 'Failed to receive transfer: {error}' => 'Falha ao receber a transferência: {error}', + 'Failed to send email. Please try again.' => 'Erro ao enviar e-mail. Tente novamente.', + 'Failed to start' => 'Erro ao iniciar', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => 'Erro ao atualizar o {num, plural, =1{estado do pedido} other{estado dos pedidos}}.', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => 'Erro ao atualizar o estado do pedido em {num, plural, =1{pedido} other{pedidos}}.', + 'Feet (ft)' => 'Pés (ft)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'Condições de filtragem que descrevem em quais pedidos essa regra se aplica. Escreva 0 para pular essa condição.', + 'First Name' => 'Nome', + 'Flat Amount Off Order' => 'Valor fixo de desconto no pedido', + 'Flat Order Discount Amount Off' => 'Valor do desconto de pedido fixo', + 'Free Order Payment Strategy' => 'Estratégia de pagamento de pedidos gratuitos', + 'Free Shipping' => 'Envio Grátis', + 'Free orders are processed by the payment gateway' => 'Os pedidos gratuitos são processados pelo gateway de pagamento', + 'Free orders complete immediately' => 'Os pedidos gratuitos completam-se imediatamente', + 'Free shipping can only be for whole order or matching items, not both.' => 'O envio gratuito só pode ser feito no pedido total ou em itens correspondentes, não em ambos.', + 'From Name' => 'Remetente', + 'Fulfill' => 'Cumprir', + 'Fulfilled' => 'Cumprido', + 'Fulfillment' => 'Cumprimento', + 'Full Name' => 'Nome completo', + 'Gateway Code' => 'Código de gateway', + 'Gateway Message' => 'Mensagem do gateway', + 'Gateway Reference' => 'Referência do gateway', + 'Gateway Response' => 'Resposta do gateway', + 'Gateway doesn’t support authorize' => 'O gateway não suporta a autorização', + 'Gateway doesn’t support partial refunds.' => 'O gateway não suporta reembolsos parciais.', + 'Gateway doesn’t support purchase' => 'O Gateway não suporta a compra', + 'Gateway doesn’t support refunds.' => 'O gateway não suporta reembolsos.', + 'Gateway saved.' => 'Gateway guardado.', + 'Gateway' => 'Gateway', + 'Gateways reordered.' => 'Gateways reordenados.', + 'Gateways' => 'Gateways', + 'General Settings' => 'Configurações Gerais', + 'General' => 'Geral', + 'Generate' => 'Gerar', + 'Generated Coupon Format' => 'Formato de cupão gerado', + 'Grams (g)' => 'Gramas (g)', + 'Groups for which this sale will be applicable to.' => 'Grupos aos quais esta venda será aplicável.', + 'HTML Email Template Path' => 'Caminho para Template de E-mail HTML', + 'Handle' => 'Identificador', + 'Harmonized System Code' => 'Código do Sistema Harmonizado', + 'Has Admin Notices' => 'Tem avisos da administração', + 'Has Emails?' => 'Possuí E-mails?', + 'Has Free Shipping' => 'Tem Envio Grátis', + 'Has Orders' => 'Tem pedidos', + 'Has Purchasable' => 'Tem produtos para compra', + 'Has Variants?' => 'Possuí Variantes?', + 'Height ({unit})' => 'Altura ({unit})', + 'Height' => 'Altura', + 'Hide snapshot' => 'Ocultar snapshot', + 'History' => 'Histórico', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'Quanto tempo (em segundos) deve um link de transferência de PDF permanecer válido antes de expirar. O padrão é 86400 (24 horas).', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => 'Quantas vezes um único e-mail pode usar esse desconto. Isso se aplica a todos os pedidos passados, quer seja usuário ou convidado. Defina como zero para uso ilimitado por usuários e convidados.', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => 'Quantas vezes é permitido ao utilizador usar este desconto. Se estiver definido para algo além de zero, o desconto estará disponível apenas para utilizadores com sessão iniciada.', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'Quantas vezes este desconto pode ser usado no total por convidados e utilizadores com sessão iniciada. Defina como zero para uso ilimitado.', + 'How products should be labeled within the control panel.' => 'Como os produtos devem ser rotulados no painel de controlo.', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'Como as Compras e Categorias estão relacionadas, o que determina os itens correspondentes. Consulte [Terminologia de relações]({link}).', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'Como esse produto será descrito em um item em um pedido. Você pode incluir tags que deem como resposta propriedades, assim como {ex1} ou {ex2}', + 'How this shipping method will be referred to in templates and forms.' => 'Como você vai se referir a esse método de envio nos templates e formulários.', + 'How variants should be labeled within the control panel.' => 'Como as variantes devem ser rotuladas no painel de controlo.', + 'How you’ll refer to this PDF in the templates.' => 'Como se irá referir a este PDF nos modelos.', + 'How you’ll refer to this product type in the templates.' => 'Como você vai se referir a esse tipo de produto nos template', + 'How you’ll refer to this shipping category in the templates.' => 'Como você vai se referir a essa categoria de envio nos templates e formulários.', + 'How you’ll refer to this status in the templates.' => 'Como você vai se referir a esse status nos templates.', + 'How you’ll refer to this subscription plan in the templates.' => 'Como se irá referir a este plano de subscrição nos modelos.', + 'How you’ll refer to this tax category in the templates.' => 'Como você vai se referir a essa categoria de tributos nos templates.', + 'ID' => 'ID', + 'IP Address' => 'Endereço de IP', + 'If disabled, this PDF will not be available or sent with emails.' => 'Se desativado, este PDF não ficará disponível nem será enviado nos emails.', + 'If disabled, this email will not send.' => 'Se desativado, este email não será enviado.', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => 'Se ativado e esta taxa não corresponder ao pedido, o valor da taxa será removido do preço em questão no carrinho.', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'Se definido para Apenas Autorizar, você precisará capturar manualmente os pagamentos antes, para então os fundos serem transferidos para sua conta. O Gateway precisa suportar a opção selecionada.', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => 'Se selecionar a percentagem que vai estar "fora do preço do item com desconto", esta vai incluir o "Valor por item" assim como qualquer outro desconto aplicado antes deste.', + 'Ignore Promotions?' => 'Ignorar promoções?', + 'Ignore previous matching sales if this sale matches.' => 'Ignorar vendas correspondentes anteriores se esta venda for correspondente.', + 'Ignore promotional prices when this discount is applied to matching line items' => 'Ignorar preços promocionais quando este desconto é aplicado a artigos de linha correspondentes', + 'Inactive Carts' => 'Carrinhos Inativos', + 'Inches (in)' => 'Polegadas (in)', + 'Include built-in line item tax.' => 'Incluir imposto de item de linha integrado.', + 'Include in price?' => 'Incluir no preço?', + 'Include line item discounts.' => 'Incluir descontos de item de linha.', + 'Include line item shipping costs.' => 'Incluir os custos de envio do item de linha.', + 'Include separate line item tax.' => 'Incluir imposto de item de linha em separado.', + 'Included in price?' => 'Incluído no preço?', + 'Included' => 'Incluído', + 'Incoming transfer from Transfer ID: ' => 'Transferência a entrar do ID de transferência: ', + 'Incoming' => 'A chegar', + 'Info' => 'Informações', + 'Information linked?' => 'Informação disponível numa ligação?', + 'Information' => 'Informação', + 'Invalid JSON' => 'JSON inválido', + 'Invalid Order ID' => 'A ID de pedido não é válida', + 'Invalid VAT ID.' => 'ID de IVA inválido.', + 'Invalid condition syntax' => 'Sintaxe da condição inválida', + 'Invalid email.' => 'Email inválido.', + 'Invalid formula syntax' => 'A sintaxe da fórmula não é válida', + 'Invalid gateway: {value}' => 'Gateway inválido: {value}', + 'Invalid inventory movements.' => 'Movimentos de stock inválidos.', + 'Invalid order condition syntax.' => 'Sintaxe inválida da condição do pedido.', + 'Invalid payment or order. Please review.' => 'Pagamento ou encomenda inválidos. Reveja.', + 'Invalid payment source ID: {value}' => 'ID de fonte de pagamento inválida: {value}', + 'Invalid store.' => 'Loja inválida.', + 'Invalid user.' => 'Utilizador inválido.', + 'Inventory Item' => 'Item de inventário', + 'Inventory Location' => 'Localização do inventário', + 'Inventory Locations' => 'Locais de inventário', + 'Inventory Tracked' => 'Inventário monitorizado', + 'Inventory Transfers' => 'Transferências de inventário', + 'Inventory could not be set.' => 'Não foi possível definir o inventário.', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => 'O local do stock tem stock comprometido, a(s) ordem(ns) deve(m) ser atendida(s) primeiro.', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => 'Se o local do inventário tiver entradas de stock, a(s) transferência(s) deve(m) ser concluída(s) primeiro.', + 'Inventory location is already deactivated.' => 'A localização do inventário já está desativada.', + 'Inventory location saved.' => 'Local do inventário guardado.', + 'Inventory locations not saved.' => 'Locais de inventário não guardados.', + 'Inventory movement could not be saved.' => 'Não foi possível guardar o movimento de inventário.', + 'Inventory movement saved.' => 'Movimento de inventário guardado.', + 'Inventory updated.' => 'Inventário atualizado.', + 'Inventory was not updated.' => 'O inventário não foi atualizado.', + 'Inventory' => 'Inventário', + 'Invoice amount' => 'Quantia da fatura', + 'Invoice date' => 'Data da fatura', + 'Is Promotable' => 'É promovível', + 'Is Promotional Price?' => 'É preço promocional?', + 'Is Shippable' => 'É expedível', + 'Is Taxable' => 'É taxável', + 'Item Rates' => 'Custo por Item', + 'Item Subtotal' => 'Subtotal do item', + 'Item Total' => 'Total do artigo', + 'Item' => 'Item', + 'Items' => 'Itens', + 'Kilograms (kg)' => 'Quilogramas (kg)', + 'Label' => 'Etiqueta', + 'Landscape' => 'Paisagem', + 'Language' => 'Idioma', + 'Last Name' => 'Sobrenome', + 'Last Updated' => 'Última atualização', + 'Leave a category rate override blank to use the rate from above.' => 'Deixar em branco a substituição de uma taxa de categoria para utilizar a taxa acima.', + 'Leave blank for unlimited uses.' => 'Deixar em branco para usos ilimitados.', + 'Leave blank if products don’t have URLs' => 'Deixar em branco se os produtos não tiverem URL', + 'Leave gateway subscription as-is' => 'Deixar a subscrição do gateway tal como está', + 'Length ({unit})' => 'Comprimento ({unit})', + 'Length' => 'Comprimento', + 'Let each product choose which sites it should be saved to' => 'Deixar que cada produto escolha os sites em que deve ser guardado', + 'Limit which orders this discount applies to based on its line items.' => 'Limitar a quais pedidos este desconto é aplicável com base nos respetivos itens de linha.', + 'Limit which purchasables this sale applies to.' => 'Limitar a quais produtos para compra se aplica esta oferta.', + 'Limit' => 'Limite', + 'Line Item Statuses' => 'Estados de item de linha', + 'Line Item' => 'Item de linha', + 'Line Items' => 'Itens de linha', + 'Line item price (minus discounts)' => 'Preço do item de linha (menos descontos)', + 'Line item shipping cost' => 'Custo de envio do item individual', + 'Line item statuses reordered.' => 'Estados do item de linha reordenados.', + 'Link Duration' => 'Duração do link', + 'Link Sent' => 'Link enviado', + 'Link to a product' => 'Link para um produto', + 'Link to a variant' => 'Ligar a uma variante', + 'Link' => 'Ligação', + 'Live' => 'Publicado', + 'Location' => 'Local', + 'Locations that should be available for previewing products in this product type.' => 'Locais que devem estar disponíveis para pré-visualização de produtos deste tipo.', + 'MM' => 'MM', + 'Make a payment' => 'Fazer um pagamento', + 'Make this the primary store' => 'Tornar esta a loja principal', + 'Manage Inventory' => 'Gerir inventário', + 'Manage donation settings' => 'Gerir definições de doações', + 'Manage general store settings' => 'Gerir definições gerais da loja', + 'Manage inventory locations' => 'Gerir locais de inventário', + 'Manage inventory stock levels' => 'Gerir os níveis de stock do inventário', + 'Manage inventory transfers' => 'Gerir transferências de inventário', + 'Manage orders' => 'Gerir pedidos', + 'Manage payment currencies' => 'Gerir moedas de pagamento', + 'Manage promotions' => 'Gerir promoções', + 'Manage shipping' => 'Gerir envios', + 'Manage store settings' => 'Gerir definições da loja', + 'Manage subscription plans' => 'Gerir planos de subscrição', + 'Manage subscription' => 'Gerir subscrição', + 'Manage subscriptions' => 'Gerir subscrições', + 'Manage taxes' => 'Gerir impostos', + 'Manage' => 'Gerir', + 'Mark as Pending' => 'Assinalar como pendente', + 'Mark as completed' => 'Assinalar como concluído', + 'Match Billing Address' => 'Fazer corresponder ao endereço de cobrança', + 'Match Customer' => 'Fazer corresponder ao cliente', + 'Match Order' => 'Fazer corresponder ao pedido', + 'Match Orders' => 'Fazer corresponder aos pedidos', + 'Match Product' => 'Corresponder produto', + 'Match Purchasable' => 'Produto para compra correspondente', + 'Match Shipping Address' => 'Fazer corresponder ao endereço de envio', + 'Match Variant' => 'Corresponder variante', + 'Matching Items' => 'Itens correspondentes', + 'Max Qty' => 'Quantidade máxima', + 'Max Uses' => 'Máximo de utilizações', + 'Max Variants' => 'Variantes máximas', + 'Max quantity must greater than min.' => 'A quantidade máxima deve ser superior à mínima.', + 'Maximum Purchase Quantity' => 'Quantidade Máxima por Compra', + 'Maximum Total Shipping Cost' => 'Custo Total Máximo do Envio', + 'Maximum allowed quantity' => 'Quantidade máxima autorizada', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'O número máximo de itens correspondentes que podem ser comprados para a aplicação do desconto. Um valor zero aqui ignorará essa condição.', + 'Maximum order quantity for this item is {num}.' => 'A quantidade máxima de pedido para este item é {num}.', + 'Message' => 'Mensagem', + 'Meters (m)' => 'Metros (m)', + 'Millimeters (mm)' => 'Milímetros (mm)', + 'Min Qty' => 'Quantidade mínima', + 'Min quantity must be less than max.' => 'A quantidade mínima deve ser inferior à máxima.', + 'Minimum Purchase Quantity' => 'Quantidade Mínima por Pedido', + 'Minimum Total Price Strategy' => 'Estratégia Mínima de Preço Total', + 'Minimum Total Shipping Cost' => 'Custo Total Mínimo do Envio', + 'Minimum allowed quantity' => 'Quantidade mínima autorizada', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'Número mínimo de items válidos que precisam ser pedidos para que esse desconto seja aplicado.', + 'Minimum order quantity for this item is {num}.' => 'A quantidade mínima para pedido deste item é {num}.', + 'Missing Gateway' => 'Gateway em falta', + 'Missing a default inventory location.' => 'Falta uma localização de inventário padrão.', + 'Move Inventory' => 'Mover inventário', + 'Move To' => 'Mover para', + 'Move {qty} from {fromType} to {toType}' => 'Mover {qty} de {fromType} para {toType}', + 'Move' => 'Mover', + 'Movement from deactivated inventory location' => 'Movimento a partir do local de inventário desativado', + 'Movement' => 'Movimento', + 'Must have at least one variant.' => 'Deve ter pelo menos uma variante.', + 'Name Field' => 'Campo do nome', + 'Name' => 'Nome', + 'New Customer' => 'Novo cliente', + 'New Customers' => 'Novos clientes', + 'New Order' => 'Novo pedido', + 'New PDF' => 'Novo PDF', + 'New address' => 'Novo endereço', + 'New catalog pricing rule' => 'Nova regra de fixação de preços por catálogo', + 'New currency' => 'Nova moeda', + 'New discount' => 'Novo Desconto', + 'New email' => 'Novo e-mail', + 'New gateway' => 'Novo gateway', + 'New line item status' => 'Novo estado de item de linha', + 'New line items get this status by default when the order is completed' => 'Novos itens de linha obtêm este status por defeito quando o pedido é concluído', + 'New location' => 'Novo local', + 'New order status' => 'Novo status de pedido', + 'New orders get this status by default' => 'Novos pedidos recebem esse status automaticamente', + 'New product type' => 'Novo tipo de produto', + 'New product' => 'Novo produto', + 'New product, choose a type' => 'Novo produto, escolher um tipo', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => 'Os novos produtos assumem como padrão a primeira categoria de imposto disponível para eles. Se não houver nenhuma disponível, será usada esta categoria.', + 'New sale' => 'Nova oferta', + 'New shipping category' => 'Nova categoria de envio', + 'New shipping method' => 'Novo método de envio', + 'New shipping rule' => 'Nova regra de envio', + 'New shipping zone' => 'Nova zona de envio', + 'New subscription plan' => 'Novo plano de subscrição', + 'New tax category' => 'Nova categoria de tributos', + 'New tax rate' => 'Novo tributo', + 'New tax zone' => 'Nova zona de tributos', + 'New transfer' => 'Nova transferência', + 'New {productType} product' => 'Novo produto {productType}', + 'New' => 'Novo', + 'Next payment' => 'Próximo pagamento', + 'No Address' => 'Sem endereço', + 'No PDFs exist yet.' => 'Não existem PDFs ainda.', + 'No access given to any specific store management features.' => 'Sem acesso atribuído a quaisquer funcionalidades específicas de gestão de lojas.', + 'No additional payment currencies exist yet.' => 'Ainda não há moedas de pagamento adicionais.', + 'No address' => 'Sem endereço', + 'No billing address' => 'Sem endereço de faturação', + 'No catalog pricing rule exists with the ID “{id}”' => 'Não existe nenhuma regra de fixação de preços do catálogo com o ID "{id}"', + 'No catalog pricing rules exist yet.' => 'Ainda não existem regras de fixação de preços de catálogo.', + 'No currency exists with the ID “{id}”' => 'Não existe moeda com a ID “{id}”', + 'No customer email address exists on this cart.' => 'Não existe nenhum e-mail de cliente neste carrinho.', + 'No description' => 'Sem descrição', + 'No discount exists with the ID “{id}”' => 'Não existe desconto com a ID “{id}”', + 'No discounts exist yet.' => 'Não existem descontos ainda.', + 'No donation amount supplied.' => 'Não foi fornecido nenhum valor de doação.', + 'No emails exist yet.' => 'Nenhum e-mail existe ainda.', + 'No inventory changes made.' => 'Não foram feitas alterações ao inventário.', + 'No inventory found.' => 'Não foi encontrado nenhum inventário.', + 'No inventory movements made.' => 'Não foram feitos movimentos de inventário.', + 'No inventory transactions for this location.' => 'Não há transações de inventário para este local.', + 'No new customer selected.' => 'Não foi selecionado nenhum novo cliente.', + 'No order history exists with the ID “{id}”' => 'Não existe histórico de pedidos com o ID “{id}”', + 'No order status history items will exist until the cart becomes an order.' => 'Não existirão itens do histórico de estado de encomenda até que o carrinho seja convertido numa encomenda.', + 'No payment source exists with the ID “{id}”' => 'Não existem fontes de pagamento com a ID “{id}”', + 'No private Note.' => 'Sem nota privada.', + 'No product available.' => 'Nenhum produto disponível.', + 'No product types exist yet.' => 'Não existe tipos de produto ainda.', + 'No purchasable available.' => 'Não está disponível nenhum produto para compra.', + 'No sale exists with the ID “{id}”' => 'Não existe oferta com a ID “{id}”', + 'No sales exist yet.' => 'Não existem ofertas ainda.', + 'No shipping address' => 'Sem endereço de Envio', + 'No shipping category exists with the ID “{id}”' => 'Não existe categoria de envio com a ID “{id}”', + 'No shipping method exists with the ID “{id}”' => 'Não existe método de envio com a ID “{id}”', + 'No shipping rule exists with the ID “{id}”' => 'Não existe regra de envio com o ID “{id}”', + 'No shipping rules exist yet.' => 'Ainda não existem regras de envio.', + 'No shipping zone exists with the ID “{id}”' => 'Não existe zona de envio com a ID “{id}”', + 'No stats available.' => 'Não há estatísticas disponíveis.', + 'No subscription plan exists with the ID “{id}”' => 'Não existe um plano de subscrição com a ID “{id}”', + 'No subscription plans exist yet.' => 'Ainda não existem planos de subscrição.', + 'No tax category exists with the ID “{id}”' => 'Não existem categorias de tributos com o ID “{id}”', + 'No tax rate exists with the ID “{id}”' => 'Não existem impostos com a ID “{id}”', + 'No tax zone exists with the ID “{id}”' => 'Não existe uma zona fiscal com a ID “{id}”', + 'No transactions exist.' => 'Não há nenhuma transação.', + 'No user authenticated.' => 'Nenhum utilizador autenticado.', + 'No' => 'Não', + 'None on hand' => 'Nenhum disponível', + 'None' => 'Nenhum', + 'Not a valid address type' => 'Tipo de endereço inválido', + 'Not a valid credit card number.' => 'Não é um número de cartão de crédito válido.', + 'Not all SKUs are unique.' => 'Nem todos os SKU são únicos.', + 'Note' => 'Observação', + 'Notes' => 'Notas', + 'Number of Coupons' => 'Número de cupões', + 'Number' => 'Número', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => 'Dos sites habilitados acima, em que sites é que os produtos deste tipo de produto devem ser guardados?', + 'On Hand' => 'Disponível', + 'Only allow this gateway to be used for zero value orders?' => 'Permitir que apenas este gateway seja utilizado para encomendas de valor zero?', + 'Only match certain purchasables…' => 'Apenas corresponder a determinados produtos para compra…', + 'Only match purchasables related to…' => 'Apenas corresponder produtos para compra relacionados com…', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => 'Só serão incluídos pedidos com os seguintes estados de pedido. Deixe em branco para incluir todos os estados.', + 'Only save product to the site they were created in' => 'Guardar produtos apenas no site em que foram criados', + 'Options' => 'Opções', + 'Order Condition Formula' => 'Formula de condição de pedido', + 'Order Description Format' => 'Formato de Descrição do Pedido', + 'Order Details' => 'Detalhes do pedido', + 'Order Fields' => 'Campos de Pedido', + 'Order PDF Download Link' => 'Link de pedido de transferência de PDF', + 'Order PDF Filename Format' => 'Formato do Nome do Arquivo PDF do Pedido', + 'Order Reference Number Format' => 'Formato do número de referência da encomenda', + 'Order Settings' => 'Configurações de Pedido', + 'Order Site' => 'Site do pedido', + 'Order Status description.' => 'Descrição do estado do pedido.', + 'Order Status' => 'Status do Pedido', + 'Order Statuses' => 'Status de Pedido', + 'Order can not be empty.' => 'O pedido não pode ficar vazio.', + 'Order count' => 'Contagem de pedidos', + 'Order customer data removed.' => 'Solicitar a remoção dos dados do cliente.', + 'Order deleted.' => 'Pedido eliminado.', + 'Order fields saved.' => 'Campos de pedido guardados.', + 'Order not found.' => 'O pedido não foi encontrado.', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => 'O saldo do pagamento do pedido é {outstandingBalanceAsCurrency}. Este é o valor máximo que será cobrado.', + 'Order recalculated.' => 'Pedido recalculado.', + 'Order status saved.' => 'Status do pedido guardado.', + 'Order statuses reordered.' => 'Estados de pedidos reordenados.', + 'Order total shipping cost' => 'Custo de envio total da encomenda', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => 'Preço total da encomenda passível de aplicação de impostos (subtotal do item individual + total de descontos + total do envio)', + 'Order' => 'Pedido', + 'Orders (Legacy)' => 'Pedidos (Legacy)', + 'Orders deleted.' => 'Pedidos eliminados.', + 'Orders not restored.' => 'Pedidos não restaurados.', + 'Orders restored.' => 'Pedidos restaurados.', + 'Orders' => 'Pedidos', + 'Organization Name' => 'Nome da empresa', + 'Organization Tax ID' => 'NIF da Empresa', + 'Origin and destination cannot be the same.' => 'A origem e o destino não podem ser o mesmo.', + 'Origin' => 'Origem', + 'Original Price' => 'Preço original', + 'Original price' => 'Preço original', + 'Original promotional price' => 'Preço promocional original', + 'Other Languages' => 'Outros idiomas', + 'Other countries' => 'Outros países', + 'Outgoing transfer from Transfer ID: ' => 'Transferência a sair do ID de transferência: ', + 'Overpaid' => 'Pagamento excessivo', + 'Overrides previous?' => 'Substitui o anterior?', + 'PDF Attachment' => 'Anexo PDF', + 'PDF Template Path' => 'Caminho do modelo de PDF', + 'PDF saved.' => 'PDF guardado.', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'PDFs e E-mails', + 'PDFs' => 'PDFs', + 'Paid Amount' => 'Quantia paga', + 'Paid Status' => 'Estado de pagamento efetuado', + 'Paid' => 'Pago', + 'Paper Orientation' => 'Orientação do papel', + 'Paper Size' => 'Tamanho do papel', + 'Partial payment not allowed.' => 'Não é permitido o pagamento parcial.', + 'Partial' => 'Parcial', + 'Past year' => 'Último ano', + 'Past {num} days' => 'Últimos {num} dias', + 'Pay {amount} of {currency} on the order.' => 'Pagar {amount} de {currency} no pedido.', + 'Pay' => 'Pagar', + 'Payment Amount' => 'Valor do Pagamento', + 'Payment Currencies' => 'Moedas de Pagamento', + 'Payment Gateway' => 'Gateway de pagamento', + 'Payment Method' => 'Método de Pagamento', + 'Payment error: {message}' => 'Erro no pagamento: {message}', + 'Payment method issue' => 'Problema no método de pagamento', + 'Payment source created.' => 'Fonte de pagamento criada.', + 'Payment source deleted.' => 'Fonte de pagamento eliminada.', + 'Payments' => 'Pagamentos', + 'Pending' => 'Pendente', + 'Per Email Address Discount Limit' => 'Limite de desconto por endereço de email', + 'Per Item Amount Off' => 'Desconto por item', + 'Per Item Discount' => 'Desconto por item', + 'Per Item Percentage Off' => 'Percentagem de desconto por item', + 'Per Item Rate' => 'Custo Por Item', + 'Per User Discount Limit' => 'Limite de desconto por utilizador', + 'Percentage Rate' => 'Custo Proporcional', + 'Phone (Alt)' => 'Telefone (Alt)', + 'Phone' => 'Telefone', + 'Pick a plan' => 'Escolher um plano', + 'Plain Text Email Template Path' => 'Caminho para Template de E-mail Simples', + 'Plan' => 'Plano', + 'Plans reordered.' => 'Planos reordenados.', + 'Portrait' => 'Retrato', + 'Post Date' => 'Data de Envio', + 'Postal Code Formula' => 'Fórmula do código postal', + 'Pounds (lb)' => 'Libras (lb)', + 'Preview' => 'Pré-visualização', + 'Previous Status' => 'Status Anterior', + 'Price' => 'Preço', + 'Prices' => 'Preços', + 'Pricing Rules' => 'Regras de preços', + 'Pricing jobs are currently running.' => 'As atividades de fixação de preços estão atualmente em curso.', + 'Pricing' => 'Preços', + 'Primary Billing Address' => 'Endereço de faturação principal', + 'Primary Shipping Address' => 'Endereço de envio principal', + 'Primary payment source updated.' => 'Fonte de pagamento principal atualizada.', + 'Primary' => 'Principal', + 'Private Note' => 'Nota privada', + 'Product Fields' => 'Campos de Produto', + 'Product ID is required.' => 'É necessária a ID do produto.', + 'Product Template' => 'Template do Produto', + 'Product Title Format' => 'Formato do Título do Produto', + 'Product Type' => 'Tipo de produto', + 'Product Types' => 'Tipos de Produto', + 'Product URI Format' => 'Formato do URI do Produto', + 'Product Variant' => 'Variante de produto', + 'Product Variants' => 'Variantes de produto', + 'Product type saved.' => 'Tipo de produto guardado.', + 'Product type settings' => 'Definições do tipo de produto', + 'Product' => 'Produto', + 'Products and Variants deleted.' => 'Produtos e Variantes eliminados.', + 'Products not restored.' => 'Produtos não restaurados.', + 'Products restored.' => 'Produtos restaurados.', + 'Products' => 'Produtos', + 'Promotable' => 'Promovível', + 'Promotable?' => 'Promovível?', + 'Promotional Amount' => 'Montante promocional', + 'Promotional Price' => 'Preço promocional', + 'Purchasable Categories' => 'Categorias para compra', + 'Purchasable ID and Sale ID are required.' => 'É necessária a ID do produto para compra e da oferta.', + 'Purchasable ID is required.' => 'É necessária a ID do produto para compra.', + 'Purchasable Type' => 'Tipo de artigo para compra', + 'Purchasable' => 'Para compra', + 'Purchase (Authorize and Capture Immediately)' => 'Comprar (Autorizar e cobrar imediatamente)', + 'Purchase Total' => 'Total da Compra', + 'Qty' => 'Qtd', + 'Quality Control' => 'Controlo de qualidade', + 'Quantity' => 'Quantidade', + 'Rate' => 'Taxa', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => 'Reatribuir {numOrders, plural, one {}=1{pedido} other{pedidos}}', + 'Recalculate order' => 'Recalcular pedido', + 'Receive Inventory' => 'Receber inventário', + 'Receive Transfer' => 'Receber transferência', + 'Receive' => 'Receber', + 'Received' => 'Recebido', + 'Recent Orders' => 'Pedidos Recentes', + 'Recipient' => 'Destinatário', + 'Recover Cart' => 'Recuperar carrinho', + 'Reduce price' => 'Reduzir preço', + 'Reduce the price by a fixed amount' => 'Reduzir um valor fixo no preço', + 'Reduce the price by a percentage of the original price' => 'Reduzir o preço segundo uma percentagem do preço original', + 'Reference' => 'Referência', + 'Refresh payment history' => 'Atualizar histórico de pagamentos', + 'Refund note' => 'Nota de reembolso', + 'Refund payment' => 'Reembolsar pagamento', + 'Refund' => 'Estornar', + 'Reject' => 'Rejeitar', + 'Rejected' => 'Rejeitado', + 'Relationship Type' => 'Tipo de relação', + 'Removable included tax rates are only allowed for the default tax zone.' => 'As taxas de imposto removíveis incluídas só são permitidas na zona de imposto predefinida.', + 'Remove address' => 'Remover endereço', + 'Remove all shipping costs from the order' => 'Remover todos os custos de envio do pedido', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => 'Remover a associação do cliente e o endereço de e-mail {numOrders, plural, one {}=1{do pedido} other{dos pedidos}}. Se desejar, selecione abaixo os dados adicionais do cliente que pretende eliminar', + 'Remove customer data' => 'Remover dados dos clientes', + 'Remove from price?' => 'Remover do preço?', + 'Remove shipping costs for matching items only' => 'Remove os custos de envio apenas nos itens correspondentes', + 'Remove the included tax when a valid organization tax ID is present?' => 'Remover o imposto incluído quando está presente um NIF empresarial válido?', + 'Remove' => 'Remover', + 'Removed' => 'Removido', + 'Repeat Customers' => 'Repetir clientes', + 'Reply To' => 'Responder a', + 'Require Billing Address At Checkout' => 'Exigir endereço de faturação no checkout', + 'Require Coupon Code' => 'Requer Código de Cupão', + 'Require Shipping Address At Checkout' => 'Exigir endereço de envio no checkout', + 'Require Shipping Method Selection At Checkout' => 'Exigir a seleção do método de envio no checkout', + 'Require' => 'Exigir', + 'Reserved' => 'Reservado', + 'Reset usage' => 'Restaurar a utilização', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'Restringir o desconto apenas aos pedidos de clientes que tenham comprado o valor mínimo total em itens válidos.', + 'Revenue Options' => 'Opções de receita', + 'Revenue' => 'Receita', + 'Rule' => 'Regra', + 'Rules reordered.' => 'Regras reordenadas.', + 'SKU' => 'SKU', + 'Safety' => 'Segurança', + 'Sale Price' => 'Preço de venda', + 'Sale description.' => 'Descrição da Oferta.', + 'Sale reordered.' => 'Venda reencomendada.', + 'Sale saved.' => 'Oferta guardada.', + 'Sale' => 'Oferta', + 'Sales deleted.' => 'Promoções eliminadas.', + 'Sales updated.' => 'Ofertas atualizadas.', + 'Sales' => 'Ofertas', + 'Save and continue editing' => 'Salvar e continuar editando', + 'Save and return to all orders' => 'Guardar e devolver a todos os pedidos', + 'Save and set rules' => 'Salvar e definir regras', + 'Save as a new rule' => 'Guardar como nova regra', + 'Save product to all sites enabled for this product type' => 'Guardar produto em todos os sites ativos para este tipo de produto', + 'Save product to other sites in the same site group' => 'Guardar produto noutros sites do mesmo grupo de sites', + 'Save product to other sites with the same language' => 'Guardar produto para outros sites com o mesmo idioma', + 'Save' => 'Salvar', + 'Search customer…' => 'Pesquisar cliente…', + 'Search inventory' => 'Pesquisar inventário', + 'Search or enter customer email…' => 'Pesquisar ou introduzir email do cliente…', + 'Search…' => 'Pesquisar…', + 'See Orders' => 'Ver pedidos', + 'Select a gateway' => 'Selecionar um gateway', + 'Select a tax category.' => 'Selecionar uma categoria de tributos.', + 'Select a tax zone. If empty, this rate will match anywhere.' => 'Selecione uma zona fiscal. Se estiver em branco, esta taxa corresponderá a qualquer lugar.', + 'Select address' => 'Selecionar endereço', + 'Select an item' => 'Selecionar um item', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'Selecione como a regra de determinação do preço do catálogo será aplicada ao(s) artigo(s) para compra.', + 'Select how the sale will be applied to the purchasable(s).' => 'Selecione como o desconto será aplicado aos itens que podem ser comprados.', + 'Select product type' => 'Selecionar o tipo de produto', + 'Select the emails that will be sent when transitioning to this status.' => 'Selecione os e-mails que serão enviados ao transicionar para esse status.', + 'Select what this rate should be applied to.' => 'Selecione onde aplicar esta taxa.', + 'Send Email' => 'Enviar email', + 'Send to custom recipient' => 'Enviar para um recipiente personalizado', + 'Send to the customer' => 'Enviar para o cliente', + 'Set Quantity' => 'Definir quantidade', + 'Set default category' => 'Definir categoria padrão', + 'Set default variant' => 'Definir variante predefinida', + 'Set or Adjust' => 'Definir ou ajustar', + 'Set price' => 'Definir preço', + 'Set status' => 'Definir status', + 'Set the price to a flat amount' => 'Definir o preço para um montante fixo', + 'Set the price to a percentage of the original price' => 'Definir o preço para uma percentagem do preço original', + 'Set the sale price to a flat amount' => 'Definir uma quantia fixa no preço de venda', + 'Set the sale price to a percentage of the original price' => 'Definir o preço de venda como uma percentagem do preço original', + 'Set to' => 'Definir para', + 'Settings saved.' => 'Definições guardadas.', + 'Settings' => 'Configurações', + 'Share cart…' => 'Partilhar carrinho…', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => 'Envio - O custo mínimo é o custo de envio, caso o preço do pedido seja inferior ao custo de envio.', + 'Shipping Address Zone' => 'Zona do endereço de envio', + 'Shipping Address' => 'Endereço de Envio', + 'Shipping Business Name' => 'Nome da Empresa para Envio', + 'Shipping Categories' => 'Categorias de Envio', + 'Shipping Category Conditions' => 'Condições da Categoria de Envio', + 'Shipping Category' => 'Categoria de Envio', + 'Shipping First Name' => 'Primeiro nome de envio', + 'Shipping Full Name' => 'Nome Completo de Envio', + 'Shipping Last Name' => 'Último nome de envio', + 'Shipping Method' => 'Método de Envio', + 'Shipping Methods' => 'Métodos de Envio', + 'Shipping Rule' => 'Regra de Envio', + 'Shipping Zones' => 'Zonas de Envio', + 'Shipping address required.' => 'É necessário um endereço de envio.', + 'Shipping categories deleted.' => 'Categorias de envio eliminadas.', + 'Shipping category saved.' => 'Categoria de envio guardada.', + 'Shipping category updated.' => 'Categoria de envio atualizada.', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'Custos de envio adicionados ao pedido como um todo antes que as taxas de percentagem, o item e o peso sejam aplicados. Defina como zero para desativar esta taxa. A regra completa, incluindo esta taxa básica, não será igual e só é aplicável se o carrinho contiver apenas itens que não precisam de ser enviados, tais como produtos digitais.', + 'Shipping method saved.' => 'Método de envio guardado.', + 'Shipping methods and rules deleted.' => 'Métodos e regras de envio eliminados.', + 'Shipping methods updated.' => 'Métodos de envio atualizados.', + 'Shipping rule saved.' => 'Regra de envio guardada.', + 'Shipping zone saved.' => 'Zona de envio guardada.', + 'Shipping' => 'Envio', + 'Short Number' => 'Número curto', + 'Show Chart?' => 'Mostrar carrinho?', + 'Show Order Count?' => 'Mostrar contagem de pedidos?', + 'Show all prices' => 'Mostrar todos os preços', + 'Show archived gateways' => 'Mostrar gateways arquivados', + 'Show order count line on chart.' => 'Mostrar a linha de contagem de pedidos no gráfico.', + 'Show related sales' => 'Mostrar vendas relacionadas', + 'Show rule details' => 'Mostrar os detalhes da regra', + 'Show the Dimensions and Weight fields for products of this type' => 'Mostrar os campos de Dimensões e Peso para produtos desse tipo', + 'Show the Title field for products' => 'Mostra o campo Título para produtos', + 'Show the Title field for variants' => 'Mostra o campo Título para variantes', + 'Signed In' => 'Iniciou sessão', + 'Site Languages' => 'Idioma do site', + 'Site store mapping saved.' => 'Mapeamento da loja do site guardado.', + 'Sites' => 'Sites', + 'Slug' => 'Slug', + 'Snapshot' => 'Snapshot', + 'Snapshots' => 'Snapshots', + 'Some orders restored.' => 'Alguns pedidos restaurados.', + 'Some products restored.' => 'Alguns produtos restaurados.', + 'Some variants restored.' => 'Algumas variantes restauradas.', + 'Something changed with the order before payment, please review your order and submit payment again.' => 'Algo mudou no pedido antes do pagamento, por favor reveja-o e faça novamente o pagamento.', + 'Sorry, no matching options.' => 'Lamentamos mas não há opções correspondentes.', + 'Source - The purchasable relationship field is on the category' => 'Fonte - O campo de relação de compra está na categoria', + 'Source' => 'Fonte', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Especifique uma condição Twig que determina se o desconto deve ser aplicado a um pedido específico. (O pedido pode ser referenciado através de uma variável `order`.)', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Especifique uma condição Twig que determina se a regra de envio deve ser aplicada a um pedido específico. (O pedido pode ser referenciado através de uma variável `order`.)', + 'Start Date' => 'Data Inicial', + 'State' => 'Estado', + 'Status Email Address' => 'Endereço de E-mail de Status', + 'Status Emails' => 'E-mails de Status', + 'Status History' => 'Histórico de estado', + 'Status Updated.' => 'Estado atualizado.', + 'Status change message' => 'Mensagem de alteração de estado', + 'Status' => 'Estado', + 'Stock' => 'Estoque', + 'Stops Processing?' => 'Para o processamento?', + 'Stops subsequent?' => 'Para o subsequente?', + 'Store Location' => 'Localização da loja', + 'Store Management' => 'Gestão de loja', + 'Store Markets' => 'Mercados da loja', + 'Store Rule' => 'Regra da loja', + 'Store saved.' => 'Loja guardada.', + 'Store' => 'Loja', + 'Stores & Sites' => 'Lojas e sites', + 'Stores' => 'Lojas', + 'Strategy to apply when an order is free or has a zero balance.' => 'Estratégia a aplicar quando um pedido é grátis ou tem saldo zero.', + 'Strategy to apply when calculating the minimum order price.' => 'Estratégia a aplicar ao calcular o preço mínimo do pedido.', + 'Subject' => 'Assunto', + 'Subscribing user' => 'Utilizador com subscrição ativa', + 'Subscription Fields' => 'Campos de subscrição', + 'Subscription Plans' => 'Planos de subscrição', + 'Subscription Settings' => 'Definições da subscrição', + 'Subscription cancelled.' => 'Subscrição cancelada.', + 'Subscription date' => 'Data de subscrição', + 'Subscription fields saved.' => 'Campos de subscrição guardados.', + 'Subscription for {user} to {plan} prevented by a plugin.' => 'Subscrição de {user} para {plan} impedida por um plugin.', + 'Subscription plan saved.' => 'Plano de subscrição guardado.', + 'Subscription plan' => 'Plano de subscrição', + 'Subscription plans' => 'Planos de subscrição', + 'Subscription reactivated.' => 'Subscrição reativada.', + 'Subscription reference' => 'Referência da subscrição', + 'Subscription started.' => 'Subscrição iniciada.', + 'Subscription switched.' => 'Subscrição trocada.', + 'Subscription to “{plan}”' => 'Subscrição de “{plan}”', + 'Subscription' => 'Subscrição', + 'Subscriptions on hold' => 'Subscrições em pausa', + 'Subscriptions' => 'Subscrições', + 'Suppress emails' => 'Suprimir emails', + 'Switch plan' => 'Mudar de plano', + 'Switch' => 'Mudar', + 'System' => 'Sistema', + 'Table Columns' => 'Colunas de tabela', + 'Target - The category relationship field is on the purchasable' => 'Destino - O campo da relação da categoria está no produto para compra', + 'Tax & Shipping' => 'Imposto e Envio', + 'Tax (inc)' => 'Taxa (inc)', + 'Tax Categories' => 'Categorias de Tributos', + 'Tax Category' => 'Categorias de Tributos', + 'Tax Rates' => 'Tributos', + 'Tax Zone' => 'Zona de Tributo', + 'Tax Zones' => 'Zonas de Tributos', + 'Tax categories deleted.' => 'Categorias de impostos eliminadas.', + 'Tax category saved.' => 'Categoria de imposto guardada.', + 'Tax category updated.' => 'Categoria de taxa atualizada.', + 'Tax rate saved.' => 'Taxa do imposto guardada.', + 'Tax rates updated.' => 'Taxas de imposto atualizadas.', + 'Tax zone saved.' => 'Zona fiscal guardada.', + 'Tax' => 'Imposto', + 'Taxable Subject' => 'Alvo do Tributo', + 'Template Path' => 'Caminho do Template', + 'That handle is already in use' => 'Essa pega já está a ser usada', + 'That handle is already in use.' => 'Esta pega já está a ser usada.', + 'The PDF to attach to this email.' => 'O PDF a anexar a este email.', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => 'A URL para a página para atualizar os detalhes de cobrança de uma assinatura, bem como gerir a autenticação 3DS.', + 'The address provided is outside the store’s market.' => 'O endereço fornecido está fora do mercado da loja.', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => 'O valor de desconto aplicado a todo o pedido. Esse valor é distribuído pelos itens de linha na ordem do preço mais alto para o preço mais baixo, até que o desconto esteja esgotado.', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => 'O desconto base só pode descontar itens do carrinho para zero até que seja gasto, e não pode tornar o pedido negativo.', + 'The cart recovery link is invalid. Please request a new one.' => 'O link de recuperação do carrinho não é válido. Solicite um novo.', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => 'A taxa de conversão que será aplicada ao converter o valor para essa moeda. Por exemplo, se o item custa {amount1}, uma taxa de conversão de {rate} resultaria em {amount2} na outra moeda.', + 'The countries that orders are allowed to be placed from.' => 'Os países a partir dos quais podem ser feitos pedidos.', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'O cupão "{code}" ultrapassou o seu limite de utilização de {limit}.', + 'The customer for this order has been deleted.' => 'O cliente associado a este pedido foi eliminado.', + 'The default shipping category is automatically available to all product types.' => 'A categoria de envio padrão está automaticamente disponível para todos os tipos de produtos.', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'O desconto "{name}" ultrapassou o seu limite total de utilização de {limit}.', + 'The download link has expired. Please request a new one.' => 'O link de download expirou. Por favor, solicite um novo.', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => 'O endereço de e-mail do qual os e-mails de status de pedidos são enviados. Deixe em branco para usar o Endereço de E-mail do Sistema definido nas Configurações Gerais do Craft.', + 'The entry that contains the description for this subscription’s plan.' => 'A entrada que contém a descrição deste plano de subscrições.', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => 'O valor fixo que deve ser descontado em cada item. Ex: “3” para $3 de desconto.', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => 'O formato usado para gerar novos cupões, por exemplo {example}. Quaisquer caracteres `#` serão substituídos por uma letra aleatória.', + 'The from and to inventory locations must be different.' => 'Os locais de inventário de origem e destino devem ser diferentes.', + 'The inventory locations this store uses.' => 'Os locais de inventário que esta loja utiliza.', + 'The item is not enabled for sale.' => 'O item não está disponível para venda.', + 'The language the order was made in.' => 'O idioma em que foi feito o pedido.', + 'The language to be used when this email is rendered.' => 'O idioma a usar quando este e-mail for renderizado.', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'O número máximo de níveis que este tipo de produto pode ter. Deixe em branco se você não se importa.', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => 'O máximo que o cliente deve gastar com o envio. Defina o valor como zero para desabilitar.', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => 'O mínimo que o cliente deve gastar com o envio. Defina o valor como zero para desabilitar.', + 'The order is not valid.' => 'O pedido não é válido.', + 'The payment gateway that will be used for the subscription plan.' => 'Que gateway de pagamento será utilizado para o plano de subscrição.', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => 'O valor percentual que deve descontar em cada item, ou seja, {ex1} para {ex2} de desconto. As percentagens são arredondadas para duas casas decimais.', + 'The previously-selected shipping method is no longer available.' => 'Já não está disponível o método de envio selecionado anteriormente.', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'O preço de {description} subiu de {originalSalePriceAsCurrency} para {newSalePriceAsCurrency}', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'O preço de {description} baixou de {originalSalePriceAsCurrency} para {newSalePriceAsCurrency}', + 'The primary currency cannot be changed after orders are placed.' => 'A moeda principal não pode ser alterada depois dos pedidos terem sido feitos.', + 'The purchasable defines the relationship' => 'Os produtos para compra definem a relação', + 'The purchasable is related by another element' => 'Os produtos para compra estão relacionados por outro elemento', + 'The recipient of the email. Twig code can be used here.' => 'O destinatário do email. O código twig pode ser utilizado aqui.', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => 'A resposta ao endereço de email. Deixar em branco para resposta normal de remetente de email. O código Twig pode ser usado aqui.', + 'The site the order was made in.' => 'O site onde o pedido foi feito.', + 'The site to be used when this email is rendered.' => 'O site a utilizar quando este e-mail for apresentado.', + 'The subject line of the email. Twig code can be used here.' => 'A linha de assunto do email. O código twig pode ser utilizado aqui.', + 'The template that the PDF should be generated from.' => 'O modelo a partir do qual o PDF deve ser gerado.', + 'The template to be used for HTML emails.' => 'O template a ser usado para e-mails HTML.', + 'The template to be used for plain text emails. Twig code can be used here.' => 'O modelo a ser utilizado nos emails de texto simples. O código twig pode ser utilizado aqui.', + 'The template to use when a product’s URL is requested.' => 'O template a ser usado quando a URL desse produto for requisitada.', + 'The total number of order adjustments changed.' => 'O número total de ajustes no pedido mudou.', + 'The total price of the order changed.' => 'O preço total do pedido mudou.', + 'The total quantity of items within the order changed.' => 'A quantidade total de itens no pedido mudou.', + 'The unique SKU of the donation purchasable.' => 'O SKU único da doação para compra.', + 'The unit of measurement that should be used when specifying product dimensions.' => 'A unidade de medida que deve ser usada ao especificar as dimensões do produto.', + 'The unit of measurement that should be used when specifying product weights.' => 'A unidade de medida que deve ser usada para especificar o peso do produto.', + 'The webhook URL for this gateway.' => 'O webhook URL para este gateway.', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => 'O nome “de” que será usado quando forem enviados e-mails de status de pedido. Deixe em branco para usar o Nome do Remetente definido nas Configurações Gerais do Craft.', + 'There are errors on the order' => 'Há erros no pedido', + 'There are only {num} “{description}” items left in stock.' => 'Existem apenas {num} “{description}” itens em stock.', + 'There aren’t any product types to select yet.' => 'Ainda não há nenhum tipo de produto para selecionar.', + 'There is no gateway or payment source available for use with this order.' => 'Não há gateway ou fonte de pagamento disponível para usar neste pedido.', + 'There is no gateway selected that supports payment sources.' => 'Não foi selecionado um gateway que suporte as fontes de pagamento.', + 'There is no shipping method selected for this order.' => 'Não foi selecionado um método de envio para este pedido.', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'Este URL irá carregar o carrinho para a sessão do utilizador, transformando-o no carrinho ativo.', + 'This action is not allowed for the current user.' => 'Essa ação não é permitida ao utilizador atual.', + 'This category will be used as the default for all purchasables in this store.' => 'Esta categoria será utilizada como padrão para todas as compras nesta loja.', + 'This coupon is for registered users and limited to {limit} uses.' => 'Este cupão é para utilizadores registados e está limitado a {limit} utilizações.', + 'This coupon is limited to {limit} uses.' => 'Este cupão está limitado a {limit} utilizações.', + 'This coupon requires an email address.' => 'Este cupão requer um endereço de e-mail.', + 'This gateway does not support that functionality.' => 'Este gateway não suporta essa funcionalidade.', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'Isto está a ser sobreposto pela definição de configuração {setting} em `config/{file}.php`.', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'Este é o endereço da localização da sua loja. Pode ser utilizado por vários plugins para determinar aspetos como o envio e os impostos. Também pode ser utilizado em recibos PDF.', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'Este é o PDF padrão que será renderizado ao pedir o PDF do pedido.', + 'This is the last location for the {store} store.' => 'Esta é a última localização da loja {store}.', + 'This month' => 'Este mês', + 'This order has unsaved changes.' => 'Este pedido tem alterações não guardadas.', + 'This week' => 'Esta semana', + 'This year' => 'Este ano', + 'Times Used' => 'Vezes Usado', + 'Title' => 'Título', + 'To' => 'Para', + 'Today' => 'Hoje', + 'Too many variants for this product.' => 'Demasiadas variantes para este produto.', + 'Top Customers by Average Order' => 'Clientes principais por média de pedido', + 'Top Customers by Total Revenue' => 'Clientes principais por rendimento total', + 'Top Customers' => 'Clientes Principais', + 'Top Product Types by Qty Sold' => 'Principais tipos de produtos por quantidade vendida', + 'Top Product Types by Revenue' => 'Principais tipos de produtos por receita', + 'Top Product Types' => 'Principais Tipos de Produtos', + 'Top Products by Qty Sold' => 'Principais produtos por quantidade vendida', + 'Top Products by Revenue' => 'Principais produtos por receita', + 'Top Products' => 'Produtos Principais', + 'Top Purchasables by Qty Sold' => 'Principais produtos para compra por quantidade vendida', + 'Top Purchasables by Revenue' => 'Principais produtos para compra por receita', + 'Top Purchasables' => 'Principais produtos para compra', + 'Total ' => 'Total ', + 'Total Discount Use Limit' => 'Limite Total de Uso do desconto', + 'Total Discount' => 'Desconto Total', + 'Total Included Tax' => 'Imposto total incluído', + 'Total Orders by Billing Country' => 'Total de pedidos por país de faturação', + 'Total Orders by Country' => 'Total de pedidos por país', + 'Total Orders by Shipping Country' => 'Total de pedidos por país de envio', + 'Total Orders' => 'Encomendas totais', + 'Total Paid' => 'Total Pago', + 'Total Price' => 'Preço Total', + 'Total Qty' => 'Quantidade total', + 'Total Revenue' => 'Total de receitas', + 'Total Shipping' => 'Total de Envio', + 'Total Tax' => 'Imposto Total', + 'Total Weight' => 'Peso total', + 'Total' => 'Total', + 'Track Inventory' => 'Monitorizar inventário', + 'Transaction Hash' => 'Hash da transação', + 'Transaction ID' => 'ID da transação', + 'Transaction captured successfully: {message}' => 'Transação realizada com sucesso: {message}', + 'Transaction refunded successfully: {message}' => 'Transação reembolsada com sucesso: {message}', + 'Transactions' => 'Transações', + 'Transfer Fields' => 'Campos de transferência', + 'Transfer Items' => 'Itens da transferência', + 'Transfer Settings' => 'Definições da transferência', + 'Transfer Status' => 'Estado da transferência', + 'Transfer fields saved.' => 'Campos de transferência guardados.', + 'Transfer must have at least one item.' => 'A transferência deve ter pelo menos um item.', + 'Transfer' => 'Transferência', + 'Transfers' => 'Transferências', + 'Trial days credited' => 'Dias de teste creditados', + 'Trial expiration' => 'Data de validade do teste', + 'Trial expiry date' => 'Data de validade do período experimental', + 'Type not in allowed options.' => 'O tipo não está nas opções permitidas.', + 'Type' => 'Tipo', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => 'De momento, não é possível cancelar a subscrição.', + 'Unable to complete order: another request is already in progress.' => 'Não foi possível concluir o pedido: já existe outro pedido em curso.', + 'Unable to find variant.' => 'Não foi possível encontrar a variante.', + 'Unable to generate coupon codes: {message}' => 'Não foi possível gerar códigos de cupão: {message}', + 'Unable to make payment at this time.' => 'De momento, não é possível efetuar o pagamento.', + 'Unable to modify subscription at this time.' => 'De momento, não é possível modificar a subscrição.', + 'Unable to reactivate subscription at this time.' => 'De momento, não é possível reativar a subscrição.', + 'Unable to reassign orders.' => 'Não é possível reatribuir pedidos.', + 'Unable to remove order data.' => 'Não foi possível eliminar os dados do pedido.', + 'Unable to retrieve Sale and Purchasable.' => 'Não foi possível encontrar a Oferta e o Produto para compra.', + 'Unable to retrieve cart.' => 'Não foi possível encontrar o carrinho.', + 'Unable to retrieve customer.' => 'Não foi possível encontrar o cliente.', + 'Unable to retrieve load cart URL' => 'Não foi possível carregar o URL do carrinho', + 'Unable to retrieve payment source.' => 'Não foi possível encontrar a fonte de pagamento.', + 'Unable to set default shipping category.' => 'Não foi possível definir a categoria de envio padrão.', + 'Unable to set default tax category.' => 'Não foi possível definir a categoria de taxas padrão.', + 'Unable to set primary payment source.' => 'Não foi possível definir a fonte principal de pagamento.', + 'Unable to start the subscription. Please check your payment details.' => 'Não foi possível iniciar a subscrição. Verifique os seus dados de pagamento.', + 'Unable to subscribe at this time.' => 'De momento, não é possível subscrever.', + 'Unable to update cart.' => 'Não foi possível atualizar o carrinho.', + 'Unable to validate address.' => 'Não foi possível validar a morada.', + 'Unit Price' => 'Preço unitário', + 'Unit price (minus discounts)' => 'Preço unitário (menos descontos)', + 'Units' => 'Unidades', + 'Unpaid' => 'Não pago', + 'Unsubscribe' => 'Anular subscrição', + 'Update Address' => 'Atualizar endereço', + 'Update Order Status' => 'Atualizar o estado da encomenda', + 'Update Order Status…' => 'Atualizar Status do Pedido…', + 'Update order' => 'Atualizar pedido', + 'Update subscription' => 'Atualizar subscrição', + 'Update' => 'Atualizar', + 'Updated By' => 'Atualizado por', + 'Updated committed stock successfully.' => 'Atualizado o stock comprometido com sucesso.', + 'Updated' => 'Atualizado', + 'Use Billing Address For Tax' => 'Utilizar o endereço de faturação para o imposto', + 'Use as the primary billing address' => 'Utilizar como endereço de faturação principal', + 'Use as the primary shipping address' => 'Utilizar como endereço de envio principal', + 'Used By Tax Rates' => 'Usado pelos Tributos', + 'Used by Tax Rates' => 'Usado pelos Tributos', + 'User Groups' => 'Grupos de Usuário', + 'User not found.' => 'O utilizador não foi encontrado.', + 'User' => 'Utilizador', + 'Uses' => 'Utilizações', + 'Validate Business Tax ID as Vat ID' => 'Validar o NIF da empresa como ID do IVA', + 'Validating condition syntax' => 'A validar a sintaxe da condição', + 'Validating formula syntax' => 'A validar a sintaxe da fórmula', + 'Variant Fields' => 'Campos de Variante', + 'Variant Has Untracked Stock' => 'A variante tem stock sem acompanhamento', + 'Variant Price' => 'Preço da variante', + 'Variant SKU' => 'SKU da variante', + 'Variant Search' => 'Pesquisa de variantes', + 'Variant Stock' => 'Stock da variante', + 'Variant Title Format' => 'Formato do Título de Variante', + 'Variant Tracks Stock' => 'Acompanhamento de stock de variantes', + 'Variant UI Label Format' => 'Formato da etiqueta de interface variante', + 'Variant has no product.' => 'A variante não tem produto.', + 'Variants not restored.' => 'Variantes não restauradas.', + 'Variants restored.' => 'Variantes restauradas.', + 'Variants' => 'Variantes', + 'View customer' => 'Ver cliente', + 'View order' => 'Ver pedido', + 'View product type - {productType}' => 'Ver tipo de produto - {productType}', + 'View user' => 'Ver utilizador', + 'View' => 'Ver', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => 'Aviso, apagar esta moeda irá parar todos os pagamentos e reembolsos nesta moeda, tem a certeza que quer apagar "{name}"?', + 'Web' => 'Web', + 'Webhook URL' => 'Webhook URL', + 'Weight ({unit})' => 'Peso ({unit})', + 'Weight Rate' => 'Fator Multiplicador por Peso', + 'Weight Unit' => 'Unidade de Peso', + 'Weight' => 'Peso', + 'What product URIs should look like for the site.' => 'Como deverá ser o aspeto dos URI de produtos do site.', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Como os títulos de produtos gerados automaticamente devem ser. Pode incluir tags que indiquem propriedades do produto, tais como {ex1} ou {ex2}. Todos os campos personalizados devem ser definidos como obrigatórios.', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Como os títulos de variante gerado automaticamente devem ser. Você pode incluir tags que deem como resultado propriedades do variante, como {ex1} ou {ex2}. Todos os campos personalizados devem ser definidos como obrigatórios.', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => 'Como os nomes dos ficheiros PDF do pedido devem parecer (sem extensão). Pode incluir tags que emitam propriedades do pedido, como {ex1} ou {ex2}.', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'Como o SKU único gerado automaticamente deve ser, quando um campo SKU é enviado sem um valor. Você pode incluir tags que deem como resposta propriedades, como {ex1} ou {ex2}', + 'What this PDF will be called in the control panel.' => 'Qual o nome deste PDF no Painel de Controlo.', + 'What this catalog pricing rule will be called in the control panel.' => 'Como será designada esta regra de fixação de preços de catálogo no painel de controlo.', + 'What this discount will be called in the control panel.' => 'Qual o nome deste desconto no Painel de Controlo.', + 'What this email will be called in the control panel.' => 'Nome deste email no Painel de Controlo.', + 'What this product type will be called in the control panel.' => 'Como este tipo de produto será chamado no Painel de Controlo.', + 'What this sale will be called in the control panel.' => 'Qual o nome desta venda no Painel de Controlo.', + 'What this shipping category will be called in the control panel.' => 'Qual o nome desta categoria no Painel de Controlo.', + 'What this shipping rule will be called in the control panel.' => 'Qual o nome desta regra de envio no Painel de Controlo.', + 'What this shipping zone will be called in the control panel.' => 'Qual o nome desta zona de envio no Painel de Controlo.', + 'What this status will be called in the control panel.' => 'Qual o nome deste estado no Painel de Controlo.', + 'What this subscription plan will be called in the control panel.' => 'Qual o nome deste plano de subscrição no Painel de Controlo.', + 'What this tax category will be called in the control panel.' => 'Qual o nome desta categoria de taxa no painel de controlo.', + 'What this tax zone will be called in the control panel.' => 'Qual o nome desta zona de taxa no painel de controlo.', + 'When this discount is applied to an order, which line items should be discounted?' => 'Quando este desconto é aplicado a um pedido, que itens de linha devem ter desconto?', + 'Whether the first available shipping method option should be set automatically on carts.' => 'Se a primeira opção de método de envio disponível deve ser definida automaticamente nos carrinhos.', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'Se a fonte de pagamento principal do utilizador deve ser definida automaticamente nos novos carrinhos.', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'Se os endereços principais de envio e faturação do utilizador devem ser definidos automaticamente nos novos carrinhos.', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => 'Se esta regra de determinação de preços do catálogo deve estar disponível para utilização, independentemente de outras condições.', + 'Whether this sale should be available for use, regardless of other conditions.' => 'Se a venda deve ou não estar disponível para utilização, independentemente das outras condições.', + 'Which data to display in the name column in the results table.' => 'Qual a data a indicar na coluna de nome na tabela de resultados.', + 'Which product types should this category be available to?' => 'Para que tipos de produto é que esta categoria deve ficar disponível?', + 'Which template should be loaded when a product’s URL is requested.' => 'Que modelo deverá ser carregado quando é solicitado o URL de um produto.', + 'Width ({unit})' => 'Largura ({unit})', + 'Width' => 'Largura', + 'YYYY' => 'AAAA', + 'Yes' => 'Sim', + 'You are not allowed to add a line item.' => 'Não tem permissão para adicionar um item de linha.', + 'You currently have no emails configured to select for this status.' => 'Atualmente não tem emails configurados a selecionar para este estado.', + 'You do not have permission to load this cart.' => 'Não tem permissão para carregar este carrinho.', + 'You must set up at least one gateway that supports subscriptions first.' => 'Primeiro, deve configurar, no mínimo, um gateway que suporte subscrições.', + 'You must be logged in or provide a valid token to load this cart.' => 'Tem de iniciar sessão ou fornecer um token válido para carregar este carrinho.', + 'You must be signed in to create a payment source.' => 'Deve ter sessão iniciada para criar uma fonte de pagamento.', + 'You must be signed in to set a primary payment source.' => 'Deve ter sessão iniciada para definir uma fonte de pagamento principal.', + 'You must make a payment to complete the order.' => 'Tem de fazer o pagamento para concluir o pedido.', + 'Your Cart Recovery Link' => 'Link para recuperar o seu carrinho', + 'Your Order PDF Download Link' => 'O seu link de pedido de transferência de PDF', + 'Your order is empty' => 'O seu pedido está vazio', + 'ZIP file' => 'Ficheiro ZIP', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'Zero - O preço mínimo é zero caso os descontos sejam maiores do que o valor do pedido.', + 'Zip Code' => 'CEP', + 'all' => 'tudo', + 'any' => 'qualquer', + 'average order total' => 'total médio de pedidos', + 'billing address' => 'endereço de faturação', + 'donation' => 'doação', + 'donations' => 'doações', + 'info' => 'informações', + 'inventory location' => 'localização do inventário', + 'new customers' => 'novos clientes', + 'on hand' => 'disponível', + 'only' => 'apenas', + 'order' => 'pedido', + 'orders' => 'pedidos', + 'price' => 'preço', + 'prices' => 'preços', + 'product variant' => 'variante de produto', + 'product variants' => 'variantes de produto', + 'product' => 'produto', + 'products' => 'produtos', + 'repeat customers' => 'repetir clientes', + 'shipping address' => 'endereço de Envio', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'shippingSameAsBilling e billingSameAsShipping não podem ser definidos em simultâneo.', + 'subscription' => 'subscrição', + 'subscriptions' => 'subscrições', + 'to' => 'para', + 'transfer' => 'transferência', + 'transfers' => 'transferências', + '{amount} included' => '{amount} incluído', + '{count} Unfulfilled Orders' => '{count} Ordens não cumpridas', + '{description} is no longer available.' => '{description} já não está disponível.', + '{description} only has {stock} in stock.' => '{description} só tem {stock} em stock.', + '{from} to {to}' => '{from} para {to}', + '{name} (Primary)' => '{name} (Principal)', + '{name} (Trashed)' => '{name} (Movido para a reciclagem)', + '{name} catalog price' => '{name} preço de catálogo', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, =1{pedido} other{pedidos}} atualizado(s).', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, one {}=1{pedido é} other{pedidos são}} associated with the {numUsers, plural, one {}=1{utilizador} other{utilizadores}}.', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, one {}=1{subscrição está} other{subscrições estão}} ativada para {numUsers, plural, one {}=1{utilizador} other{utilizadores}}.', + '{number} more…' => '{number} mais…', + '{pct} off the discounted item price' => '{pct} de desconto no preço do item', + '{pct} off the original item price' => '{pct} de desconto no preço original do item', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, one {}=1{não foi atribuído} other{não foram atribuídos}} a um site.', + '{total} in total revenue' => '{total} em receitas totais', + '{total} orders' => '{total} pedidos', + '{total} saleable across {locationCount} location(s)' => '{total} vendável através de {locationCount} local(ais)', + '{uses} uses across {emails} email addresses' => '{uses} utilizações em {emails} endereços de email', + '{uses} uses across {users} users' => '{uses} utilizações em {users} utilizadores', + '“{description}” is currently out of stock.' => '“{description}” está fora de stock de momento.', + '“{key}” has invalid JSON' => '“{key}” tem JSON inválido', +]; diff --git a/lang/sk/commerce.php b/lang/sk/commerce.php new file mode 100644 index 0000000000..a911780be0 --- /dev/null +++ b/lang/sk/commerce.php @@ -0,0 +1,1423 @@ + '(nová cena)', + '(of original price)' => '(z pôvodnej ceny)', + '(off original price)' => '(z pôvodnej ceny)', + 'A cart number must be specified.' => 'Musíte uviesť číslo košíka.', + 'A cart recovery link has been sent to {email}.' => 'Odkaz na obnovenie košíka bol odoslaný na adresu {email}.', + 'A cart recovery link will be sent to {email}.' => 'Odkaz na obnovenie košíka odošleme na adresu {email}.', + 'A friendly reference number will be generated based on this format when a cart is completed and becomes an order. For example {ex1}, or
{ex2}. The result of this format must be unique.' => 'Po naplnení košíka a jeho premene na objednávku sa na základe tohto formátu vytvorí zrozumiteľné referenčné číslo. Napríklad {ex1} alebo
{ex2}. Výsledok tohto formátovania musí byť jedinečný.', + 'A new download link has been sent to {email}' => 'Nový odkaz na stiahnutie bol odoslaný na adresu {email}', + 'A new download link will be sent to {email}' => 'Nový odkaz na stiahnutie bude zaslaný na adresu {email}', + 'A valid email is required to create a customer.' => 'Pre vytvorenie zákazníka sa vyžaduje platná e-mailová adresa.', + 'Accept' => 'Prijať', + 'Accepted' => 'Prijaté', + 'Actions' => 'Akcie', + 'Active Carts' => 'Aktívne Košíky', + 'Active subscriptions' => 'Aktívne prihlásenia na odber', + 'Active' => 'Aktívny', + 'Add Address' => 'Pridať adresu', + 'Add a coupon' => 'Pridať kupón', + 'Add a custom line item' => 'Pridať vlastnú položku', + 'Add a line item' => 'Pridať riadkovú položku', + 'Add a product' => 'Pridať produkt', + 'Add a variant' => 'Pridať variantu', + 'Add an adjustment' => 'Pridať nastavenie', + 'Add an item' => 'Pridať položku', + 'Add an option' => 'Pridať možnosť', + 'Add catalog price' => 'Pridať katalógovú cenu', + 'Add' => 'Pridať', + 'Additional Actions' => 'Dodatočné úkony', + 'Additional recipients that should receive this email. Twig code can be used here.' => 'Dodatoční príjemcovia, ktorí by mali obdržať tento e-mail. Môže byť použitý Twig kód.', + 'Address 1' => 'Adresa 1', + 'Address 2' => 'Adresa 2', + 'Address 3' => 'Adresa 3', + 'Address Line 1' => 'Adresa, riadok 1', + 'Address Line 2' => 'Adresa, riadok 2', + 'Address Updated.' => 'Adresa aktualizovaná.', + 'Address copied to user.' => 'Adresa skopírovaná pre používateľa.', + 'Address not found.' => 'Adresa nebola nájdená.', + 'Adjust Quantity' => 'Upraviť množstvo', + 'Adjust by' => 'Upraviť podľa', + 'Adjust price when included rate is disqualified?' => 'Upraviť cenu, keď je zahrnutá sadzba diskvalifikovaná?', + 'Adjustments' => 'Nastavenia', + 'Admin Notices' => 'Oznámenia správcu', + 'Administrative Area Code of Origin' => 'Kód administratívnej oblasti pôvodu', + 'Advanced' => 'Pokročilé', + 'All Orders' => 'Všetky objednávky', + 'All Totals' => 'Všetko celkom', + 'All Transfers' => 'Všetky prevody', + 'All active subscriptions' => 'Všetky aktívne prihlásenia na odber', + 'All customers' => 'Všetci zákazníci', + 'All products' => 'Všetky produkty', + 'All variants must have a SKU.' => 'Všetky varianty musia mať SKU.', + 'All' => 'Všetky', + 'Allow Checkout Without Payment' => 'Povoliť kontrolu bez platby', + 'Allow Empty Cart On Checkout' => 'Povoliť prázdny košík pri pokladni', + 'Allow Partial Payment On Checkout' => 'Povoliť čiastočnú platbu pri pokladni', + 'Allow out of stock purchases' => 'Umožniť nákupy tovaru, ktorý nie je na sklade', + 'Allow' => 'Povoliť', + 'Allowed Qty' => 'Povolené Množstvo', + 'Alternative Phone' => 'Alternatívne telefónne číslo', + 'Amount' => 'Množstvo', + 'An ID must be provided' => 'Musí byť poskytnutá identifikácia', + 'An error occurred while generating this PDF.' => 'Pri vytváraní tohto súboru PDF sa vyskytla chyba.', + 'Any' => 'Akékoľvek', + 'Anywhere' => 'Kdekoľvek', + 'Are you sure you want to archive the “{name}” subscription plan? It WILL NOT cancel the existing subscriptions.' => 'Naozaj chcete archivovať plán prihlásení na odber {name}? Táto akcia nezruší existujúce prihlásenia na odber.', + 'Are you sure you want to capture this transaction?' => 'Určite zachytiť túto transakciu?', + 'Are you sure you want to complete this order?' => 'Naozaj chcete dokončiť túto objednávku?', + 'Are you sure you want to delete the selected orders?' => 'Určite zmazať vybrané objednávky?', + 'Are you sure you want to delete the selected product and its variants?' => 'Ste si istí, že chcete vymazať vybraný výrobok a jeho varianty?', + 'Are you sure you want to delete this shipping rule?' => 'Naozaj chcete odstrániť toto pravidlo dopravy?', + 'Are you sure you want to delete “{name}” and all its products? Please make sure you have a backup of your database before performing this destructive action.' => 'Určite zmazať „{name}“ a všetky prislúchajúce produkty? Uisti sa prosím, že je spravená záloha databázy pred vykonaním tejto deštruktívnej akcie.', + 'Are you sure you want to delete “{name}”, this will set all line items with this status to no status?' => 'Určite zmazať „{name}“? Všetky riadkové položky s týmto stavom budú zmenené na „žiadny stav“.', + 'Are you sure you want to mark this transfer as pending? This will show as incoming at the destination.' => 'Naozaj chcete tento prevod označiť ako čakajúci? V cieli sa zobrazí ako prichádzajúci.', + 'Are you sure you want to overwrite the billing address?' => 'Naozaj chcete prepísať fakturačnú adresu?', + 'Are you sure you want to overwrite the shipping address?' => 'Naozaj chcete prepísať dodaciu adresu?', + 'Are you sure you want to permanently delete this store and everything in it?' => 'Naozaj chcete natrvalo odstrániť tento obchod a všetko, čo obsahuje?', + 'Are you sure you want to refund this transaction?' => 'Určite vrátiť túto transakciu?', + 'Are you sure you want to remove this customer?' => 'Naozaj chcete odstrániť tohto zákazníka?', + 'Are you sure you want to save this as a new shipping rule?' => 'Naozaj chcete uložiť ako nové pravidlo dopravy?', + 'Are you sure you want to send email: {name}?' => 'Naozaj chcete poslať e-mail: {name}?', + 'At least one site must be enabled for the product type.' => 'Pre daný typ produktu musí byť povolená aspoň jedna stránka.', + 'Attempted Payments' => 'Pokusy o platbu', + 'Attention' => 'Pozor', + 'Authorize Only (Manually Capture)' => 'Len autorizovať (ručne zachytiť)', + 'Auto Set Cart Shipping Method Option' => 'Automatické nastavenie spôsobu dopravy v košíku', + 'Auto Set New Cart Addresses' => 'Automatické nastavenie nových adries košíka', + 'Auto Set Payment Source' => 'Automatické nastavenie zdroja platby', + 'Automatic SKU Format' => 'Automatický SKU Formát', + 'Available Shipping Categories' => 'Dostupné kategórie dopravy', + 'Available Tax Categories' => 'Dostupné kategórie daní', + 'Available for purchase' => 'Dostupné na nákup', + 'Available for purchase?' => 'Dostupné na nákup?', + 'Available inventory for "{description}" has gone below zero.' => 'Dostupné zásoby pre položky „{description}“ klesli pod nulu.', + 'Available to Product Types' => 'Dostupné pre typy produktov', + 'Available' => 'Dostupné', + 'Available?' => 'Dostupné?', + 'Average Order Total' => 'Priemerná cena objednávky', + 'Average' => 'Priemerný', + 'BCC’d Recipient' => 'Príjemca Skrytej kópie (BCC)', + 'Bad Request' => 'Zlá požiadavka', + 'Bad address ID.' => 'Zlé ID adresy.', + 'Bad order ID.' => 'Zlé ID objednávky.', + 'Base Price' => 'Základná cena', + 'Base Promotional Price' => 'Základná propagačná cena', + 'Base Rate' => 'Základná Sadzba', + 'Base' => 'Základ', + 'Bcc' => 'Skrytá kópia (Bcc)', + 'Billing Address' => 'Fakturačná adresa', + 'Billing Business Name' => 'Fakturačný obchodný názov', + 'Billing First Name' => 'Meno na fakturácii', + 'Billing Full Name' => 'Celý fakturačný názov', + 'Billing Last Name' => 'Priezvisko na fakturácii', + 'Billing address required.' => 'Požaduje sa fakturačná adresa.', + 'Billing detail update URL' => 'URL pre aktualizáciu platobných údajov', + 'Billing issues' => 'Problémy s platbou', + 'Billing' => 'Účtovanie', + 'Both (Line item price + Line item shipping costs)' => 'Obidve (cena riadkovej položky + náklady na dodanie riadkovej položky)', + 'Business ID' => 'IČO', + 'Business Name' => 'Obchodné Meno', + 'Business Tax ID' => 'DIČ', + 'CC’d Recipient' => 'Príjemca kópie (CC)', + 'CVV' => 'CVV', + 'Can be used as an internal reference.' => 'Je možné použiť ako internú referenciu.', + 'Can not complete payment for missing transaction.' => 'Nemožno dokončiť platbu pre chýbajúcu transakciu.', + 'Can not create a new order' => 'Nepodarilo sa vytvoriť novú objednávku', + 'Can not find an order to pay.' => 'Nie je možné nájsť objednávku na zaplatenie.', + 'Can not find enabled email.' => 'Nebolo možné nájsť povolený e-mail.', + 'Can not find order' => 'Objednávku nebolo možné nájsť', + 'Can not find order.' => 'Objednávku nebolo možné nájsť.', + 'Can not find the transaction to refund' => 'Transakcia na refundáciu sa nenašla', + 'Can not move between these inventory types.' => 'Medzi týmito typmi zásob sa nedá pohybovať.', + 'Can not refund amount greater than the remaining amount' => 'Nie je možné refundovať vyššiu sumu ako je zvyšná suma', + 'Cancel subscription' => 'Zrušiť prihlásenie na odber', + 'Cancel with gateway now' => 'Zrušiť cez platobnú bránu teraz', + 'Cancel' => 'Zrušiť', + 'Cancellation date' => 'Dátum zrušenia', + 'Cancellation' => 'Zrušenie', + 'Cannot switch plans for this subscription.' => 'Nie je možné prepnúť plány pre toto prihlásenie na odber.', + 'Can’t preview this email.' => 'Nie je možné zobraziť náhľad tohto e-mailu.', + 'Capture payment' => 'Zachytiť platbu', + 'Capture' => 'Zachytiť', + 'Card Holder' => 'Držiteľ karty', + 'Card Number' => 'Číslo karty', + 'Card' => 'Karta', + 'Cart Recovery Link' => 'Odkaz na obnovenie košíka', + 'Cart forgotten.' => 'Zabudnutý košík.', + 'Cart updated.' => 'Košík je aktualizovaný.', + 'Cart {number}' => 'Košík {number}', + 'Catalog Pricing Rule' => 'Pravidlo stanovovania cien podľa katalógu', + 'Catalog pricing rule description.' => 'Popis pravidla stanovovania cien podľa katalógu.', + 'Catalog pricing rule saved.' => 'Pravidlo stanovovania cien podľa katalógu bolo uložené.', + 'Catalog pricing rules deleted.' => 'Pravidlá stanovovania cien podľa katalógu boli odstránené.', + 'Catalog pricing rules updated.' => 'Pravidlá stanovovania cien podľa katalógu boli aktualizované.', + 'Categories Relationship Type' => 'Kategórie typov vzťahov', + 'Categories' => 'Kategórie', + 'Category Rate Overrides' => 'Nahradenia sadzieb kategórií', + 'Centimeters (cm)' => 'Centimetre (cm)', + 'Changing this value may affect your ability to refund existing transactions.' => 'Zmena tejto hodnoty môže ovplyvniť možnosť refundácie existujúcich transakcií.', + 'Choose a color to represent the order’s status' => 'Vyberte farbu, ktorá má predstavovať stav objednávky', + 'Choose a new customer' => 'Vyberte nového zákazníka', + 'Choose adjustment values to include when calculating the product revenue total.' => 'Vyberte hodnoty úprav, ktoré sa majú zahrnúť pri výpočte celkových príjmov z produktu.', + 'Choose the currency’s ISO code.' => 'Vyberte k mene kód ISO.', + 'Choose the destination inventory location for the existing on hand stock.' => 'Vyberte cieľové miesto zásob pre existujúce zásoby na sklade.', + 'Choose which sites this product type should be available in, and configure the site-specific settings.' => 'Vyberte, na ktorých weboch by mala byť tento typ produktu k dispozícii, a nakonfigurujte nastavenia pre konkrétne weby.', + 'City' => 'Mesto', + 'Clear counter' => 'Vynulovať počítadlo', + 'Clear notices' => 'Vymazať upozornenia', + 'Close' => 'Zavrieť', + 'Code' => 'Kód', + 'Collated PDF' => 'Zosumarizované PDF', + 'Color' => 'Farba', + 'Commerce Products' => 'Commerce produkty', + 'Commerce Settings' => 'Commerce Nastavenia', + 'Commerce Variants' => 'Varianty systému Commerce', + 'Commerce email “{email}” could not be sent for order “{order}”.' => 'E-mail systému Commerce „{email}“ pre objednávku „{order}“ sa nedá odoslať.', + 'Commerce order exports' => 'Exporty objednávok systému Commerce', + 'Commerce' => 'Commerce', + 'Committed' => 'Odovzdané', + 'Completed Email' => 'Vyplnený e-mail', + 'Completed' => 'Dokončené', + 'Completing order failed.' => 'Nepodarilo sa dokončiť objednávku.', + 'Condition' => 'Stav', + 'Conditions here are matched against an order before looking through the rules. This is useful if you want to qualify a method’s availability early, or if there are common conditions to all rules for this method.' => 'Podmienky sa tu porovnávajú s príkazom pred vyhľadaním pravidiel. To je užitočné, ak chcete predčasne overiť dostupnosť spôsobu alebo ak existujú spoločné podmienky pre všetky pravidlá pre tento spôsob.', + 'Conditions here are matched against the order’s customer before looking through the rules. This is useful if you want qualify a method’s availability early or if there are common conditions to all rules for this method.' => 'Podmienky sa tu porovnávajú so zákazníkom objednávky pred vyhľadaním pravidiel. To je užitočné, ak chcete predčasne overiť dostupnosť metódy alebo ak existujú spoločné podmienky pre všetky pravidlá pre túto metódu.', + 'Conditions' => 'Podmienky', + 'Contains Purchasables' => 'Obsahuje položky na predaj', + 'Control Panel Settings' => 'Nastavenia ovládacieho panela', + 'Control panel' => 'Ovládací panel', + 'Conversion Rate' => 'Konverzný kurz', + 'Converted Price' => 'Konvertovaná cena', + 'Copied!' => 'Skopírované!', + 'Copy the URL' => 'Kopírovať URL', + 'Copy to {location}' => 'Kopírovať do {location}', + 'Copy' => 'Kopírovať', + 'Costs' => 'Náklady', + 'Could not archive gateway.' => 'Brána sa nedá archivovať.', + 'Could not cancel “{reference}”.' => 'Nebolo možné zrušiť „{reference}“.', + 'Could not create the payment source.' => 'Zdroj platby sa nedá vytvoriť.', + 'Could not delete shipping rule' => 'Pravidlo dodania sa nedá odstrániť', + 'Could not delete shipping zone' => 'Dodacia oblasť sa nedá odstrániť', + 'Could not delete {count, number} shipping {count, plural, one{category} other{categories}}.' => 'Nepodarilo sa vymazať {count, number} {count, plural, one{kategóriu dopravy} few {kategórie dopravy} many {kategórie dopravy} other{kategórií dopravy}}.', + 'Could not delete {count, number} shipping {count, plural, one{method} other{methods}} and rules.' => 'Nepodarilo sa vymazať {count, number} {count, plural, one{spôsob dopravy} few {spôsoby dopravy} many {spôsobu dopravy} other{spôsobov dopravy}} a pravidlá.', + 'Could not delete {count, number} tax {count, plural, one{category} other{categories}}.' => 'Nepodarilo sa vymazať {count, number} {count, plural, one{daňovú kategóriu} few {daňové kategórie} many {daňovej kategórie} other{daňových kategórií}}.', + 'Could not find the email or template.' => 'E-mail alebo šablónu sa nepodarilo nájsť.', + 'Could not mark order {number} as complete. Order save failed during order completion with errors: {order}' => 'Objednávku {number} nebolo možné označiť ako dokončenú. Pri dokončovaní nasledujúcej objednávky zlyhalo jej uloženie s chybami: {order}', + 'Could not reactivate “{reference}”.' => 'Nebolo možné znovu aktivovať „{reference}“.', + 'Could not send email' => 'E-mail nebolo možné odoslať', + 'Could not switch “{reference}” to “{plan}”.' => 'Nebolo možné zmeniť „{reference}“ na „{plan}“.', + 'Could not update orders address.' => 'Adresy objednávok sa nedajú aktualizovať.', + 'Couldn’t archive Line Item Status.' => 'Nebolo možné archivovať stav riadkovej položky.', + 'Couldn’t archive Order Status.' => 'Nebolo možné archivovať stav objednávky.', + 'Couldn’t capture transaction.' => 'Nemožno zachytiť transakciu.', + 'Couldn’t capture transaction: {message}' => 'Nemožno zachytiť transakciu: {message}', + 'Couldn’t delete email.' => 'Nepodarilo sa odstrániť e-mail.', + 'Couldn’t delete the payment source.' => 'Zdroj platby sa nedá odstrániť.', + 'Couldn’t get order.' => 'Nemožno získať objednávku.', + 'Couldn’t recalculate order.' => 'Nemožno prepočítať objednávku.', + 'Couldn’t refund transaction.' => 'Nemožno vrátiť transakciu.', + 'Couldn’t refund transaction: {message}' => 'Transakciu nie je možné vrátiť: {message}', + 'Couldn’t reorder Line Item Statuses.' => 'Nedalo sa zmeniť usporiadanie stavov riadkových položiek.', + 'Couldn’t reorder Order Statuses.' => 'Nedalo sa zmeniť usporiadanie stavov objednávok.', + 'Couldn’t reorder PDFs.' => 'Poradie súborov PDF sa nedá zmeniť.', + 'Couldn’t reorder discounts.' => 'Nedalo sa zmeniť usporiadanie zliav.', + 'Couldn’t reorder gateways.' => 'Poradie brán sa nedá zmeniť.', + 'Couldn’t reorder plans.' => 'Opätovná objednávka plánov sa nepodarila.', + 'Couldn’t reorder rules.' => 'Poradie pravidiel sa nedá zmeniť.', + 'Couldn’t reorder sale.' => 'Poradie výpredaja nebolo možné zmeniť.', + 'Couldn’t reorder sales.' => 'Poradie predajných akcií sa nedá zmeniť.', + 'Couldn’t reorder statuses.' => 'Poradie stavov sa nedá zmeniť.', + 'Couldn’t reorder stores.' => 'Nepodarilo sa zmeniť poradie obchodov.', + 'Couldn’t save PDF.' => 'Nemožno uložiť súbor PDF.', + 'Couldn’t save catalog pricing rule.' => 'Nepodarilo sa uložiť pravidlo stanovovania cien podľa katalógu.', + 'Couldn’t save currency.' => 'Mena sa nedala uložiť.', + 'Couldn’t save discount.' => 'Nemožno uložiť zľavu.', + 'Couldn’t save email.' => 'Nemožno uložiť e-mail.', + 'Couldn’t save gateway.' => 'Brána sa nedá uložiť.', + 'Couldn’t save inventory location.' => 'Nepodarilo sa uložiť umiestnenie zásob.', + 'Couldn’t save line item status.' => 'Nemožno uložiť stav riadkovej položky.', + 'Couldn’t save order fields.' => 'Nemožno uložiť polia objednávky.', + 'Couldn’t save order status.' => 'Nemožno uložiť stav objednávky.', + 'Couldn’t save order.' => 'Nemožno uložiť objednávku.', + 'Couldn’t save product type.' => 'Nemožno uložiť typ produktu.', + 'Couldn’t save sale.' => 'Nemožno uložiť výpredaj.', + 'Couldn’t save settings.' => 'Nemožno uložiť nastavenia.', + 'Couldn’t save shipping category.' => 'Kategória dopravy sa nedala uložiť.', + 'Couldn’t save shipping method.' => 'Nemožno uložiť spôsob dodania.', + 'Couldn’t save shipping rule.' => 'Nemožno uložiť pravidlo dodania.', + 'Couldn’t save shipping zone.' => 'Nie je možné vybrať zónu doručenia.', + 'Couldn’t save store.' => 'Nepodarilo sa uložiť obchod.', + 'Couldn’t save subscription fields.' => 'Polia predplatného sa nepodarilo uložiť.', + 'Couldn’t save subscription plan.' => 'Plán prihlásení na odber sa nedá uložiť.', + 'Couldn’t save subscription.' => 'Predplatné nebolo možné uložiť.', + 'Couldn’t save tax category.' => 'Nemožno uložiť daňovú kategóriu.', + 'Couldn’t save tax rate.' => 'Nemožno uložiť daňovú sadzbu.', + 'Couldn’t save tax zone.' => 'Nemožno uložiť daňovú zónu.', + 'Couldn’t save transfer fields.' => 'Nemožno uložiť polia prevodu.', + 'Couldn’t update catalog pricing rule statuses.' => 'Nepodarilo sa aktualizovať stav pravidla stanovovania cien podľa katalógu.', + 'Couldn’t update status.' => 'Stav sa nepodarilo aktualizovať.', + 'Couldn’t updated sales status.' => 'Nebolo možné aktualizovať stav výpredajov.', + 'Country Code of Origin' => 'Kód krajiny pôvodu', + 'Country List' => 'Zoznam krajín', + 'Country not allowed.' => 'Krajina nie je povolená.', + 'Country' => 'Krajina', + 'Coupon Code' => 'Kupónový Kód', + 'Coupon can not apply discount to this order due to address mismatch.' => 'Kupón nie je možné uplatniť na túto objednávku z dôvodu nesúladu adries.', + 'Coupon can not apply discount to this order due to customer mismatch.' => 'Kupón nie je možné uplatniť na túto objednávku z dôvodu nesúladu zákazníka.', + 'Coupon can not apply discount to this order.' => 'Kupón nie je možné uplatniť na túto objednávku.', + 'Coupon code “{code}” is already in use by discount “{name}”.' => 'Kód kupónu „{code}“ sa už používa pri zľave „{name}“.', + 'Coupon codes cannot be blank.' => 'Kódy kupónov nemôžu byť prázdne.', + 'Coupon codes must be unique.' => 'Kódy kupónov musia byť jedinečné.', + 'Coupon format is required and must contain at least one `#`.' => 'Formát kupónu je povinný a musí obsahovať aspoň jeden znak „#“.', + 'Coupon not valid.' => 'Kupón je neplatný.', + 'Coupon removed: {explanation}' => 'Kupón odstránený: {explanation}', + 'Coupons' => 'Kupóny', + 'Craft Commerce - Administration' => 'Craft Commerce – Správa', + 'Craft Commerce - Inventory' => 'Craft Commerce – Zásoby', + 'Craft Commerce - Orders' => 'Craft Commerce – Objednávky', + 'Craft Commerce - Product Type - {name}' => 'Craft Commerce – Typ výrobku – {name}', + 'Craft Commerce - Subscriptions' => 'Craft Commerce – Predplatné', + 'Create a Discount' => 'Vytvoriť zľavu', + 'Create a Subscription Plan' => 'Vytvorte plán prihlásení na odber', + 'Create a new PDF' => 'Vytvoriť nový súbor PDF', + 'Create a new catalog pricing rule' => 'Vytvoriť nové pravidlo stanovovania cien podľa katalógu', + 'Create a new currency' => 'Vytvoriť novú menu', + 'Create a new email' => 'Vytvoriť nový e-mail', + 'Create a new gateway' => 'Vytvoriť novú bránu', + 'Create a new line item status' => 'Vytvoriť nový stav riadkovej položky', + 'Create a new order status' => 'Vytvoriť nový stav objednávky', + 'Create a new product type' => 'Vytvoriť nový typ produktu', + 'Create a new sale' => 'Vytvoriť nový výpredaj', + 'Create a new shipping category' => 'Vytvoriť novú kategóriu dopravy', + 'Create a new shipping method' => 'Vytvoriť nový spôsob dodania', + 'Create a new shipping rule' => 'Vytvoriť nové pravidlo dodania', + 'Create a new tax category' => 'Vytvoriť novú daňovú kategóriu', + 'Create a new tax rate' => 'Vytvoriť novú daňovú sadzbu', + 'Create a product type' => 'Vytvoriť typ produktu', + 'Create a shipping zone' => 'Vytvoriť zónu doručenia', + 'Create a tax zone' => 'Vytvoriť daňovú zónu', + 'Create catalog pricing rules' => 'Vytvoriť pravidlá stanovovania cien podľa katalógu', + 'Create customer: “{email}”' => 'Vytvoriť zákazníka: „{email}“', + 'Create discounts' => 'Vytvoriť zľavy', + 'Create discount…' => 'Vytvoriť zľavu…', + 'Create rules that allow this discount to match the order.' => 'Vytvorte pravidlá, ktoré umožnia, aby táto zľava zodpovedala objednávke.', + 'Create rules that allow this discount to match the order’s billing address.' => 'Vytvorte pravidlá, ktoré umožnia, aby táto zľava zodpovedala fakturačnej adrese objednávky.', + 'Create rules that allow this discount to match the order’s customer.' => 'Vytvorte pravidlá, ktoré umožnia, aby táto zľava zodpovedala zákazníkovi objednávky.', + 'Create rules that allow this discount to match the order’s shipping address.' => 'Vytvorte pravidlá, ktoré umožnia, aby táto zľava zodpovedala dodacej adrese objednávky.', + 'Create rules that allow this gateway to match the billing address.' => 'Vytvorte pravidlá, ktoré umožnia, aby táto brána zodpovedala fakturačnej adrese.', + 'Create rules that allow this gateway to match the order.' => 'Vytvorte pravidlá, ktoré umožnia, aby táto platobná brána zodpovedala objednávke.', + 'Create rules that allow this gateway to match the shipping address.' => 'Vytvorte pravidlá, ktoré umožnia, aby táto brána zodpovedala dodacej adrese.', + 'Create sales' => 'Vytvoriť výpredaj', + 'Create sale…' => 'Vytvoriť výpredaj…', + 'Created' => 'Vytvorené', + 'Credit Card Payment Type' => 'Typ Platby Kreditnou Kartou', + 'Currency Code' => 'Kód meny', + 'Currency saved.' => 'Mena sa uložila.', + 'Currency' => 'Mena', + 'Current' => 'Súčasný', + 'Custom 1' => 'Vlastný 1', + 'Custom 2' => 'Vlastný 2', + 'Custom 3' => 'Vlastný 3', + 'Custom 4' => 'Vlastný 4', + 'Custom' => 'Vlastný', + 'Customer Enabled?' => 'Povolené pre zákazníkov?', + 'Customer ID is required.' => 'Vyžaduje sa ID zákazníka.', + 'Customer Note' => 'Poznámka zákazníka', + 'Customer Notices' => 'Zákaznícke upozornenia', + 'Customer data' => 'Údaje o zákazníkoch', + 'Customer' => 'Zákazník', + 'Damaged' => 'Poškodené', + 'Data shown might be outdated.' => 'Uvedené údaje môžu byť zastarané.', + 'Date Authorized' => 'Dátum schválenia', + 'Date Created' => 'Dátum Vytvorenia', + 'Date First Paid' => 'Dátum prvej platby', + 'Date Ordered' => 'Dátum Objednania', + 'Date Paid' => 'Dátum Úhrady', + 'Date Updated' => 'Dátum Aktualizácie', + 'Date from which the catalog pricing rule will be active. Leave blank for unlimited start date' => 'Dátum, od ktorého bude pravidlo stanovovania cien podľa katalógu aktívne. Prázdne pre neobmedzený dátum začiatku', + 'Date from which the discount will be active. Leave blank for unlimited start date' => 'Dátum, od ktorého bude zľava aktívna. Prázdne pre neobmedzený dátum začiatku', + 'Date from which the sale will be active. Leave blank for unlimited start date' => 'Dátum, od ktorého bude výpredaj aktívny. Prázdne pre neobmedzený dátum začiatku', + 'Date when the catalog pricing rule will be finished. Leave blank for unlimited end date' => 'Dátum, od ktorého bude pravidlo stanovovania cien podľa katalógu ukončené. Prázdne pre neobmedzený dátum začiatku', + 'Date when the discount will be finished. Leave blank for unlimited end date' => 'Dátum, kedy bude zľava ukončená. Prázdne pre neobmedzený dátum ukončenia', + 'Date when the sale will be finished. Leave blank for unlimited end date' => 'Dátum, kedy bude výpredaj ukončený. Prázdne pre neobmedzený dátum ukončenia', + 'Date' => 'Dátum', + 'Default - Allow the price to be negative if discounts are greater than the order value.' => 'Predvolené – Povoliť zápornú cenu v prípade, že zľavy sú vyššie ako hodnota objednávky.', + 'Default Category' => 'Predvolená kategória', + 'Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access.' => 'Predvolené zobrazenie ovládacieho panela Commerce. Ak používateľ nemá oprávnenie, vráti sa na miesto, ku ktorému má prístup.', + 'Default Order PDF' => 'Predvolená objednávka PDF', + 'Default Per Item Rate' => 'Predvolená sadzba na položku', + 'Default Percentage Rate' => 'Predvolená percentuálna sadzba', + 'Default Status?' => 'Predvolený Stav?', + 'Default View' => 'Predvolené zobrazenie', + 'Default Weight Rate' => 'Predvolená váhová sadzba', + 'Default Zone' => 'Predvolená Zóna', + 'Default status?' => 'Predvolený stav?', + 'Default to this tax zone when no billing address is set' => 'Nastaviť predvolenú hodnotu na túto daňovú oblasť, ak nie je nastavená fakturačná adresa', + 'Default to this tax zone when no shipping address is set' => 'Predvoliť túto daňovú zónu, ak nie je nastavená žiadna dodacia adresa', + 'Default variant updated.' => 'Predvolený variant aktualizovaný.', + 'Default' => 'Predvolené', + 'Default?' => 'Predvolené?', + 'Delete catalog pricing rules' => 'Odstrániť pravidlá stanovovania cien podľa katalógu', + 'Delete discounts' => 'Súvisiace zľavy', + 'Delete orders' => 'Zmazať objednávky', + 'Delete sales' => 'Odstrániť výpredaj', + 'Delete' => 'Zmazať', + 'Deleting the {location} location.' => 'Odstránenie polohy {location}.', + 'Describe this rule.' => 'Popíš toto pravidlo.', + 'Describe this shipping zone.' => 'Popíšte túto zónu doručenia.', + 'Describe this tax zone.' => 'Popis tejto daňovej zóny.', + 'Description' => 'Popis', + 'Destination Inventory Location' => 'Inventarizácia miesta určenia', + 'Destination' => 'Cieľ', + 'Details' => 'Podrobnosti', + 'Dimension Unit' => 'Jednotka Rozmeru', + 'Dimensions' => 'Rozmery', + 'Disabled' => 'Deaktivované', + 'Disallow' => 'Zakázať', + 'Discount all line items' => 'Zľaviť všetky riadkové položky', + 'Discount description.' => 'Popis zľavy.', + 'Discount is not allowed for the order' => 'Na túto objednávku nie je možné uplatniť zľavu', + 'Discount is out of date.' => 'Zľava je premlčaná.', + 'Discount saved.' => 'Zľava uložená.', + 'Discount the matching items only' => 'Zľaviť iba zhodujúce sa položky', + 'Discount use has reached its limit.' => 'Použitie zliav dosiahlo limit.', + 'Discount' => 'Zľava', + 'Discounted Item Subtotal' => 'Medzisúčet zľavnenej položky', + 'Discounted Items' => 'Zľavnené položky', + 'Discounts deleted.' => 'Zľavy odstránené.', + 'Discounts reordered.' => 'Poradie zliav bolo zmenené.', + 'Discounts updated.' => 'Zľavy aktualizované.', + 'Discounts' => 'Zľavy', + 'Disqualify with valid business tax ID?' => 'Diskvalifikovať sa platným daňovým identifikačným číslom?', + 'Do not apply subsequent matching sales beyond applying this sale.' => 'Nepoužívať následné zodpovedajúce predajné akcie nad rámec použitia tejto predajnej akcie.', + 'Do not apply this rate if the order address has any of the selected valid business tax IDs.' => 'Túto sadzbu neuplatňujte, ak má adresa objednávky niektoré z vybraných platných DIČ pre podnikateľov.', + 'Do not attach a PDF to this email' => 'K tomuto e-mailu neprikladajte súbor PDF', + 'Do not call recalculate on the order (Number: {orderNumber}) if errors are present.' => 'V prípade chýb nevolať prepočítanie objednávky (Číslo: {orderNumber}).', + 'Donation can not be zero.' => 'Hodnota daru nemôže byť nula.', + 'Donation needs to be an amount.' => 'Dar musí mať uvedenú hodnotu.', + 'Donation settings saved.' => 'Nastavenia darovania uložené.', + 'Donation' => 'Darovanie', + 'Donations' => 'Dary', + 'Done' => 'Hotovo', + 'Don’t apply any subsequent discounts to an order if this discount is applied' => 'Ak sa uplatňuje táto zľava, neuplatňovať žiadne ďalšie zľavy', + 'Download PDF' => 'Stiahnuť PDF', + 'Download PDF…' => 'Stiahnuť PDF…', + 'Download Type' => 'Stiahnuť typ', + 'Download' => 'Stiahnuť', + 'Draft' => 'Koncept', + 'Dummy gateway payment failed.' => 'Platba cez prázdnu bránu zlyhala.', + 'Duplicate options exist' => 'Existuje duplicitná možnosť', + 'Duration' => 'Trvanie', + 'EU VAT ID' => 'DIČ pre EÚ', + 'Edit address' => 'Upraviť adresu', + 'Edit adjustments' => 'Upraviť nastavenia', + 'Edit catalog pricing rules' => 'Upraviť pravidlá stanovovania cien podľa katalógu', + 'Edit discounts' => 'Upraviť zľavy', + 'Edit options' => 'Upraviť možnosti', + 'Edit orders' => 'Upraviť objednávky', + 'Edit sales' => 'Upraviť výpredaj', + 'Edit' => 'Upraviť', + 'Effect' => 'Efekt', + 'Either (Default) - The relationship field is on the purchasable or the category' => 'Oboje (predvolené) - Pole vzťahov je na položke na predaj alebo kategórii', + 'Either way' => 'Obojsmerne', + 'Email PDF generation error for email “{email}”. Order: “{order}”. PDF Template error: “{message}” {file}:{line}' => 'Chyba generovania PDF e-mailu pre e-mail „{email}“. Objednávka: „{order}“. Chyba šablóny PDF: „{message}“ {file}:{line}', + 'Email PDF template does not exist at “{templatePath}” for email “{email}”. Order: “{order}”.' => 'V ceste „{templatePath}“ neexistuje e-mailová šablóna vo formáte PDF pre e-mail „{email}“. Objednávka: „{order}“.', + 'Email Subject' => 'Predmet Emailu', + 'Email error. No email address found for order. Order: “{order}”' => 'Chyba e-mailu. K objednávke nie je priradená žiadna e-mailová adresa. Objednávka:„{order}“', + 'Email is not enabled.' => 'E-mail nie je povolený.', + 'Email plain text template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'V ceste „{templatePath}“ neexistuje e-mailová šablóna s obyčajným textom. Výsledkom je cesta „{templateParsedPath}“ pre e-mail „{email}“. Objednávka: „{order}“.', + 'Email plain text template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Chyba analýzy e-mailovej šablóny s obyčajným textom pre e-mail „{email}“. Objednávka: „{order}“. Chyba šablóny: „{message}“ {file}:{line}', + 'Email plain text template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Chyba analýzy e-mailovej šablóny s obyčajným textom pre e-mail „{email}“ v „Cesta šablóny“. Objednávka: „{order}“. Chyba šablóny: „{message}“ {file}:{line}', + 'Email required to make payments on a completed order.' => 'Na uskutočnenie platieb na základe vyplnenej objednávky sa požaduje e-mail.', + 'Email saved.' => 'E-mail uložený.', + 'Email sent' => 'E-mail odoslaný', + 'Email template does not exist at “{templatePath}” which resulted in “{templateParsedPath}” for email “{email}”. Order: “{order}”.' => 'V ceste „{templatePath}“ neexistuje e-mailová šablóna. Výsledkom je cesta „{templateParsedPath}“ pre e-mail „{email}“. Objednávka: „{order}“.', + 'Email template parse error for custom email “{email}” in “To:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Chyba analýzy e-mailovej šablóny pre vlastný e-mail „{email}“ v „Adresát:“. Objednávka: „{order}“. Chyba šablóny: „{message}“ {file}:{line}', + 'Email template parse error for email “{email}” in “BCC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Chyba analýzy e-mailovej šablóny pre e-mail „{email}“ v „Skrytá kópia:“. Objednávka: „{order}“. Chyba šablóny: „{message}“ {file}:{line}', + 'Email template parse error for email “{email}” in “CC:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Chyba analýzy e-mailovej šablóny pre e-mail „{email}“ v „Kópia:“. Objednávka: „{order}“. Chyba šablóny: „{message}“ {file}:{line}', + 'Email template parse error for email “{email}” in “ReplyTo:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Chyba analýzy e-mailovej šablóny pre e-mail „{email}“ v „Odpoveď:“. Objednávka: „{order}“. Chyba šablóny: „{message}“ {file}:{line}', + 'Email template parse error for email “{email}” in “Subject:”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Chyba analýzy e-mailovej šablóny pre e-mail „{email}“ v „Predmet:“. Objednávka: „{order}“. Chyba šablóny: „{message}“ {file}:{line}', + 'Email template parse error for email “{email}”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Chyba analýzy e-mailovej šablóny pre e-mail „{email}“. Objednávka: „{order}“. Chyba šablóny: „{message}“ {file}:{line}', + 'Email template path parse error for email “{email}” in “Template Path”. Order: “{order}”. Template error: “{message}” {file}:{line}' => 'Chyba analýzy cesty e-mailovej šablóny pre e-mail „{email}“ v „Cesta šablóny:“. Objednávka: „{order}“. Chyba šablóny: „{message}“ {file}:{line}', + 'Email unavailable.' => 'E-mail nie je k dispozícii.', + 'Email “{email}” could not be sent for order “{order}”. Error: {error} {file}:{line}' => 'Pre objednávku „{order}“ nebolo možné odoslať e-mail „{email}“. Chyba: {error} {file}:{line}', + 'Email “{email}” for order {order} was cancelled.' => 'E-mail „{email}“ k objednávke „{order}“ bol zrušený.', + 'Email' => 'E-mail', + 'Emails' => 'Emaily', + 'Enable if this rate should be built into the taxable subject price instead of adding a cost to the order.' => 'Povoľte, ak sa má táto sadzba započítať do ceny zdaniteľného predmetu namiesto pridania nákladov k objednávke.', + 'Enable structure for products of this type' => 'Povoľte štruktúru pre produkty tohto typu', + 'Enable this discount' => 'Povoliť túto zľavu', + 'Enable this rule' => 'Povoliť toto pravidlo', + 'Enable this sale' => 'Povoliť tento výpredaj', + 'Enable this shipping method on the front end' => 'Povoliť tento spôsob dodania na front-ende', + 'Enable this shipping rule' => 'Povoliť toto pravidlo dodania', + 'Enable this tax rate' => 'Povoliť túto daňovú sadzbu', + 'Enabled for customers to select during checkout?' => 'Umožniť zákazníkom vybrať počas overovania?', + 'Enabled for customers to select?' => 'Majú zákazníci povolený výber?', + 'Enabled' => 'Povolené', + 'Enabled?' => 'Povolené?', + 'End Date' => 'Dátum ukončenia', + 'Enter SKU' => 'Zadať SKU', + 'Enter a human-friendly name for this tax rate to be used in the control panel.' => 'Zadajte názov tejto daňovej sadzby, ktorý sa bude používať v ovládacom paneli.', + 'Enter a percentage like {ex1} or {ex2}.' => 'Zadajte percentuálnu hodnotu, ako napr. {ex1} alebo {ex2}.', + 'Enter coupon code' => 'Zadajte kód kupónu', + 'Enter reference' => 'Zadajte referenciu', + 'Error refunding transaction: {transactionHash}' => 'Chyba pri refundácii transakcie: {transactionHash}', + 'Every new store must be assigned to at least one site.' => 'Každý nový obchod musí byť priradený aspoň k jednej lokalite.', + 'Everywhere' => 'Všade', + 'Example' => 'Príklad', + 'Exclude this discount for products that are already on promotion' => 'Nepoužiť túto zľavu na výrobky, ktoré sú už v akcii', + 'Expired Link' => 'Neplatný odkaz', + 'Expired' => 'Vypršaný', + 'Expiry Date' => 'Dátum vypršania platnosti', + 'Expiry date' => 'Dátum exspirácie', + 'Expiry' => 'Platnosť', + 'Failed to receive transfer: {error}' => 'Nepodarilo sa prijať prevod: {error}', + 'Failed to send email. Please try again.' => 'Odoslanie e-mailu sa nepodarilo. Skúste to znovu.', + 'Failed to start' => 'Nebolo možné spustiť', + 'Failed to update {num, plural, =1{order status} other{order statuses}}.' => 'Nepodarilo sa aktualizovať {num, plural, one {} few {stavy objednávky} many {stavov objednávky}=1{stav objednávky} other{stavov objednávky}}.', + 'Failed updating order status on {num, plural, =1{order} other{orders}}.' => 'Nepodarilo sa aktualizovať stav pre {num, plural, one {} few {objednávky} many {objednávok}=1{objednávku} other{objednávok}}.', + 'Feet (ft)' => 'Stopy (ft)', + 'Filtering conditions which describe to which orders this rule is applicable to. Write 0 to skip a condition.' => 'Filtrovanie podmienok, ktoré popisujú, na ktoré objednávky sa toto pravidlo vzťahuje. Nula pre preskočenie podmienky.', + 'First Name' => 'Krstné Meno', + 'Flat Amount Off Order' => 'Pevná cena z objednávky', + 'Flat Order Discount Amount Off' => 'Fixná čiastka zľavy objednávky', + 'Free Order Payment Strategy' => 'Platobná stratégia pre objednávku zdarma', + 'Free Shipping' => 'Doprava Zdarma', + 'Free orders are processed by the payment gateway' => 'Objednávky zdarma sú spracované platobnou bránou', + 'Free orders complete immediately' => 'Objednávky zdarma sa dokončia ihneď', + 'Free shipping can only be for whole order or matching items, not both.' => 'Doprava zdarma je dostupná len pre celú objednávku alebo zhodné položky, avšak nie pre oboje.', + 'From Name' => 'Meno Od', + 'Fulfill' => 'Splniť', + 'Fulfilled' => 'Splnené', + 'Fulfillment' => 'Splnenie', + 'Full Name' => 'Celé meno', + 'Gateway Code' => 'Kód brány', + 'Gateway Message' => 'Správa z brány', + 'Gateway Reference' => 'Referencia brány', + 'Gateway Response' => 'Odpoveď brány', + 'Gateway doesn’t support authorize' => 'Brána nepodporuje autorizáciu', + 'Gateway doesn’t support partial refunds.' => 'Brána nepodporuje čiastočné refundácie.', + 'Gateway doesn’t support purchase' => 'Brána nepodporuje nákup', + 'Gateway doesn’t support refunds.' => 'Brána nepodporuje refundácie.', + 'Gateway saved.' => 'Brána bola uložená.', + 'Gateway' => 'Brána', + 'Gateways reordered.' => 'Poradie brán bolo zmenené.', + 'Gateways' => 'Brány', + 'General Settings' => 'Všeobecné Nastavenia', + 'General' => 'Všeobecné', + 'Generate' => 'Generovať', + 'Generated Coupon Format' => 'Formát generovaného kupónu', + 'Grams (g)' => 'Gramy (g)', + 'Groups for which this sale will be applicable to.' => 'Skupiny, na ktoré sa tento výpredaj vzťahuje.', + 'HTML Email Template Path' => 'Cesta HTML Emailovej Šablóny', + 'Handle' => 'Identifikátor', + 'Harmonized System Code' => 'Kód harmonizovaného systému', + 'Has Admin Notices' => 'Obsahuje oznámenia správcu', + 'Has Emails?' => 'Má emaily?', + 'Has Free Shipping' => 'Má dopravu zadarmo', + 'Has Orders' => 'Má objednávky', + 'Has Purchasable' => 'Má položky na predaj', + 'Has Variants?' => 'Má Varianty?', + 'Height ({unit})' => 'Výška ({unit})', + 'Height' => 'Výška', + 'Hide snapshot' => 'Skryť snímku', + 'History' => 'História', + 'How long (in seconds) a PDF download link should remain valid before expiring. Default is 86400 (24 hours).' => 'Ako dlho (v sekundách) má odkaz na stiahnutie PDF zostať platný pred vypršaním platnosti. Predvolená hodnota je 86400 (24 hodín).', + 'How many times one email address is allowed to use this discount. This applies to all previous orders, whether guest or user. Set to zero for unlimited use by guests or users.' => 'Koľkokrát môže byť táto zľava využitá z jednej emailovej adresy. Toto sa týka všetkých predošlých objednávok vykonaných návštevníkmi aj užívateľmi. Pre neobmedzené použitie návštevníkmi alebo užívateľmi nastavte na nula.', + 'How many times one user is allowed to use this discount. If this is set to something besides zero, the discount will only be available to signed in users.' => 'Koľkokrát môže jeden používateľ využiť túto zľavu. Ak je táto hodnota nastavená na inú hodnotu ako nula, zľava bude k dispozícii len prihláseným používateľom.', + 'How many times this discount can be used in total by guests or signed in users. Set zero for unlimited use.' => 'Koľkokrát celkovo môžu túto zľavu využiť hostia alebo prihlásení používatelia. Nastavte nulu pre neobmedzené použitie.', + 'How products should be labeled within the control panel.' => 'Ako by mali byť produkty označené v ovládacom paneli.', + 'How the Purchasables and Categories are related, which determines the matching items. See [Relations Terminology]({link}).' => 'Aký vzťah majú medzi sebou položky na zakúpenie a kategórie. Toto určuje položky zhody. Viď [Terminológia vzťahov]({link}).', + 'How this product will be described on a line item in an order. You can include tags that output properties, such as {ex1} or {ex2}' => 'Ako bude výrobok opísaný v riadkovej položke objednávky. Môžete pridať štítky, ktorých výstupom sú vlastnosti, ako napríklad {ex1} alebo {ex2}', + 'How this shipping method will be referred to in templates and forms.' => 'Ako sa bude na tento spôsob dodania odkazovať v šablónach a formulároch.', + 'How variants should be labeled within the control panel.' => 'Ako by mali byť varianty označené v ovládacom paneli.', + 'How you’ll refer to this PDF in the templates.' => 'Názov, akým budete tento PDF súbor nazývať v šablónach.', + 'How you’ll refer to this product type in the templates.' => 'Ako sa bude na tento typ produktu odkazovať v šablónach.', + 'How you’ll refer to this shipping category in the templates.' => 'Ako sa bude táto kategória dopravy označovať v šablónach.', + 'How you’ll refer to this status in the templates.' => 'Ako sa bude na tento stav odkazovať v šablónach.', + 'How you’ll refer to this subscription plan in the templates.' => 'Spôsob, akým sa v šablónach odkazuje na tento plán prihlásení na odber.', + 'How you’ll refer to this tax category in the templates.' => 'Ako sa bude na túto daňovú kategóriu odkazovať v šablónach.', + 'ID' => 'ID', + 'IP Address' => 'Adresa IP', + 'If disabled, this PDF will not be available or sent with emails.' => 'Ak bude zakázaný, nebude tento PDF súbor k dispozícii a nebude možné ho posielať ako prílohu v e-mailoch.', + 'If disabled, this email will not send.' => 'Ak je táto položka zakázaná, tento e-mail sa neodošle.', + 'If enabled and this rate does not match the order, the rate amount will be removed from the subject price in the cart.' => 'Ak je táto možnosť povolená a táto sadzba nesúhlasí s objednávkou, bude táto zahrnutá suma sadzby odstránená z ceny predmetu v košíku.', + 'If set to Authorize Only, you will need to manually capture payments before the funds will be transferred to your account. The Gateway needs to support the selected option.' => 'Ak je nastavené na Len Autorizovať, bude treba platby ručne zachytiť než budú finančné prostriedky prevedené na účet. Brána musí vybranú voľbu podporovať.', + 'If you select the percentage to be “off the discounted item price”, this will include the “Per Item Amount” as well as any other discounts that applied before this one.' => 'Ak vyberiete percentuálnu sadzbu „zo zľavnenej ceny položky“, bude obsahovať ako „zľavnenú čiastku na položku“, tak aj akékoľvek iné zľavy, ktoré boli použité pred touto.', + 'Ignore Promotions?' => 'Ignorovať akcie?', + 'Ignore previous matching sales if this sale matches.' => 'Ignorovať predchádzajúce zodpovedajúce predajné akcie, ak táto predajná akcia súhlasí.', + 'Ignore promotional prices when this discount is applied to matching line items' => 'Ignorovať akčné ceny keď je táto zľava použitá na zhodujúce sa riadkové položky', + 'Inactive Carts' => 'Neaktívne Košíky', + 'Inches (in)' => 'Palce (in)', + 'Include built-in line item tax.' => 'Zahrnúť zabudovanú daňovú položku.', + 'Include in price?' => 'Zahrnúť do ceny?', + 'Include line item discounts.' => 'Zahrnúť zľavy z položiek.', + 'Include line item shipping costs.' => 'Zahrnúť náklady na dopravu v jednotlivých položkách.', + 'Include separate line item tax.' => 'Zahrnúť samostatnú daňovú položku.', + 'Included in price?' => 'Zahrnuté v cene?', + 'Included' => 'Vrátane', + 'Incoming transfer from Transfer ID: ' => 'Prichádzajúci prevod z Transfer ID: ', + 'Incoming' => 'Prichádzajúce', + 'Info' => 'Informácie', + 'Information linked?' => 'Je informácia prepojená?', + 'Information' => 'Informácia', + 'Invalid JSON' => 'Neplatné JSON', + 'Invalid Order ID' => 'Neplatné ID objednávky', + 'Invalid VAT ID.' => 'Neplatné IČ DPH.', + 'Invalid condition syntax' => 'Neplatná podmienka syntaxe', + 'Invalid email.' => 'Neplatná e-mailová adresa.', + 'Invalid formula syntax' => 'Neplatná syntax vzorca', + 'Invalid gateway: {value}' => 'Neplatná brána: {value}', + 'Invalid inventory movements.' => 'Neplatné pohyby zásob.', + 'Invalid order condition syntax.' => 'Neplatná syntax podmienky objednávky.', + 'Invalid payment or order. Please review.' => 'Neplatná platba alebo objednávka. Skontrolujte, prosím.', + 'Invalid payment source ID: {value}' => 'Neplatné ID zdroja platby: {value}', + 'Invalid store.' => 'Neplatný obchod.', + 'Invalid user.' => 'Neplatný používateľ.', + 'Inventory Item' => 'Položka inventára', + 'Inventory Location' => 'Umiestnenie zásob', + 'Inventory Locations' => 'Umiestnenia zásob', + 'Inventory Tracked' => 'Sledovanie zásob', + 'Inventory Transfers' => 'Prevody zásob', + 'Inventory could not be set.' => 'Zásoby sa nepodarilo nastaviť.', + 'Inventory location has committed stock, the order(s) must first be fulfilled.' => 'Inventárne miesto má viazané zásoby, objednávka musí byť najprv splnená.', + 'Inventory location has incoming stock, the transfer(s) must first be completed.' => 'Inventúrne miesto má zásoby na prijatie, musí sa najprv dokončiť prevod.', + 'Inventory location is already deactivated.' => 'Umiestnenie zásob je už deaktivované.', + 'Inventory location saved.' => 'Uložené umiestnenie zásob.', + 'Inventory locations not saved.' => 'Umiestnenie zásob nebolo uložené.', + 'Inventory movement could not be saved.' => 'Pohyb zásob nebolo možné uložiť.', + 'Inventory movement saved.' => 'Uložený pohyb zásob.', + 'Inventory updated.' => 'Inventár aktualizovaný.', + 'Inventory was not updated.' => 'Inventár nebol aktualizovaný.', + 'Inventory' => 'Inventár', + 'Invoice amount' => 'Suma faktúry', + 'Invoice date' => 'Dátum faktúry', + 'Is Promotable' => 'Je možné propagovať', + 'Is Promotional Price?' => 'Je propagačná cena?', + 'Is Shippable' => 'Je možné odoslať', + 'Is Taxable' => 'Je zdaniteľné', + 'Item Rates' => 'Sadzby za položky', + 'Item Subtotal' => 'Medzisúčet položky', + 'Item Total' => 'Položka celkom', + 'Item' => 'Položka', + 'Items' => 'Položky', + 'Kilograms (kg)' => 'Kilogramy (kg)', + 'Label' => 'Štítok', + 'Landscape' => 'Krajina', + 'Language' => 'Jazyk', + 'Last Name' => 'Priezvisko', + 'Last Updated' => 'Naposledy aktualizované', + 'Leave a category rate override blank to use the rate from above.' => 'Ak chcete použiť sadzbu z vyššie uvedenej kategórie, ponechajte prázdne miesto.', + 'Leave blank for unlimited uses.' => 'Pre neobmedzené použitie nechajte prázdne.', + 'Leave blank if products don’t have URLs' => 'Ak produkty nemajú adresy URL, ponechajte prázdne', + 'Leave gateway subscription as-is' => 'Pnoechať predplatné brány bez zmien', + 'Length ({unit})' => 'Dĺžka ({unit})', + 'Length' => 'Dĺžka', + 'Let each product choose which sites it should be saved to' => 'Nechať každý produkt zvoliť, na ktoré weby sa má uložiť', + 'Limit which orders this discount applies to based on its line items.' => 'Obmedziť, na ktoré objednávky sa táto zľava vzťahuje na základe ich položiek.', + 'Limit which purchasables this sale applies to.' => 'Obmedzte, na ktorý nákupný tovar sa tento predaj vzťahuje.', + 'Limit' => 'Limit', + 'Line Item Statuses' => 'Stavy riadkových položiek', + 'Line Item' => 'Riadková položka', + 'Line Items' => 'Riadkové položky', + 'Line item price (minus discounts)' => 'Cena položky (znížená o zľavy)', + 'Line item shipping cost' => 'Náklady na dodanie riadkovej položky', + 'Line item statuses reordered.' => 'Stavy riadkových položiek boli zmenené.', + 'Link Duration' => 'Trvanie odkazu', + 'Link Sent' => 'Odkaz bol odoslaný', + 'Link to a product' => 'Odkaz na produkt', + 'Link to a variant' => 'Odkaz na variant', + 'Link' => 'Odkaz', + 'Live' => 'Publikované', + 'Location' => 'Poloha', + 'Locations that should be available for previewing products in this product type.' => 'Umiestnenia, ktoré majú byť dostupné pre náhľad produktov v tomto type produktu.', + 'MM' => 'MM', + 'Make a payment' => 'Vykonať platbu', + 'Make this the primary store' => 'Nastaviť ako hlavný obchod', + 'Manage Inventory' => 'Správa zásob', + 'Manage donation settings' => 'Spravovať nastavenia darovania', + 'Manage general store settings' => 'Spravovať všeobecné nastavenia obchodu', + 'Manage inventory locations' => 'Správa skladových miest', + 'Manage inventory stock levels' => 'Správa úrovne skladových zásob', + 'Manage inventory transfers' => 'Spravovať presuny zásob', + 'Manage orders' => 'Správa objednávok', + 'Manage payment currencies' => 'Spravovať platobné meny', + 'Manage promotions' => 'Spravovať akcie', + 'Manage shipping' => 'Správa prepravy', + 'Manage store settings' => 'Spravovať nastavenia obchodu', + 'Manage subscription plans' => 'Spravovať plány predplatného', + 'Manage subscription' => 'Správa prihlásení na odber', + 'Manage subscriptions' => 'Správa prihlásení na odber', + 'Manage taxes' => 'Správa daní', + 'Manage' => 'Spravovať', + 'Mark as Pending' => 'Označiť ako čakajúce', + 'Mark as completed' => 'Označiť ako dokončené', + 'Match Billing Address' => 'Zhoda fakturačnej adresy', + 'Match Customer' => 'Zhoda zákazníka', + 'Match Order' => 'Zhoda objednávky', + 'Match Orders' => 'Zhoda objednávok', + 'Match Product' => 'Zodpovedajúci produkt', + 'Match Purchasable' => 'Zhoda položiek na predaj', + 'Match Shipping Address' => 'Zhoda dodacej adresy', + 'Match Variant' => 'Zodpovedajúci variant', + 'Matching Items' => 'Položky so zhodou', + 'Max Qty' => 'Maximálne množstvo', + 'Max Uses' => 'Maximálny počet použití', + 'Max Variants' => 'Maximálne varianty', + 'Max quantity must greater than min.' => 'Max. množstvo musí byť väčšie ako min.', + 'Maximum Purchase Quantity' => 'Maximálny počet položiek v nákupe', + 'Maximum Total Shipping Cost' => 'Maximálna celková cena dopravy', + 'Maximum allowed quantity' => 'Maximálne povolené množstvo', + 'Maximum number of matching items that can be ordered for this discount to apply. A zero value here will skip this condition.' => 'Maximálny počet zhodných položiek, ktoré treba objednať, aby zľava platila. Pri zadanej nulovej hodnote sa podmienka preskakuje.', + 'Maximum order quantity for this item is {num}.' => 'Maximálne množstvo objednávky tejto položky je {num}.', + 'Message' => 'Správa', + 'Meters (m)' => 'Metre (m)', + 'Millimeters (mm)' => 'Milimetre (mm)', + 'Min Qty' => 'Minimálne množstvo', + 'Min quantity must be less than max.' => 'Min. množstvo musí byť menšie ako max.', + 'Minimum Purchase Quantity' => 'Minimálny počet položiek v nákupe', + 'Minimum Total Price Strategy' => 'Stratégia pre minimálnu celkovú cenu', + 'Minimum Total Shipping Cost' => 'Minimálna celková cena dopravy', + 'Minimum allowed quantity' => 'Minimálne povolené množstvo', + 'Minimum number of matching items that need to be ordered for this discount to apply.' => 'Minimálny počet zhodných položiek, ktoré treba objednať, aby zľava nadobudla platnosť.', + 'Minimum order quantity for this item is {num}.' => 'Minimálne množstvo objednávky tejto položky je {num}.', + 'Missing Gateway' => 'Chýba brána', + 'Missing a default inventory location.' => 'Chýba predvolené umiestnenie inventára.', + 'Move Inventory' => 'Presun inventára', + 'Move To' => 'Presunúť do', + 'Move {qty} from {fromType} to {toType}' => 'Presunúť {qty} z {fromType} do {toType}', + 'Move' => 'Presunúť', + 'Movement from deactivated inventory location' => 'Presun z deaktivovaného inventárneho miesta', + 'Movement' => 'Presun', + 'Must have at least one variant.' => 'Musí mať aspoň jeden variant.', + 'Name Field' => 'Pole s názvom', + 'Name' => 'Meno', + 'New Customer' => 'Nový zákazník', + 'New Customers' => 'Noví zákazníci', + 'New Order' => 'Nová objednávka', + 'New PDF' => 'Nové PDF', + 'New address' => 'Nová adresa', + 'New catalog pricing rule' => 'Nové pravidlo stanovovania cien podľa katalógu', + 'New currency' => 'Nová mena', + 'New discount' => 'Nová zľava', + 'New email' => 'Nový email', + 'New gateway' => 'Nová brána', + 'New line item status' => 'Nový stav riadkovej položky', + 'New line items get this status by default when the order is completed' => 'Keď sa objednávka dokončí, nové riadkové položky budú mať tento stav predvolený', + 'New location' => 'Nové umiestnenie', + 'New order status' => 'Nový stav objednávky', + 'New orders get this status by default' => 'Nové objednávky budú mať tento stav predvolený', + 'New product type' => 'Nový typ produktu', + 'New product' => 'Nový produkt', + 'New product, choose a type' => 'Nový produkt, vyberte typ', + 'New products default to the first tax category available to them. If none are available, this category will be used.' => 'Pre nové produkty bude predvolená prvá dostupná daňová kategória. Ak nebude žiadna dostupná, použije sa táto kategória.', + 'New sale' => 'Nový výpredaj', + 'New shipping category' => 'Nová kategória dopravy', + 'New shipping method' => 'Nový spôsob dodania', + 'New shipping rule' => 'Nové pravidlo dodania', + 'New shipping zone' => 'Nová zóna doručenia', + 'New subscription plan' => 'Nový plán prihlásení na odber', + 'New tax category' => 'Nová daňová kategória', + 'New tax rate' => 'Nová daňová sadzba', + 'New tax zone' => 'Nová daňová zóna', + 'New transfer' => 'Nový prevod', + 'New {productType} product' => 'Nový produkt {productType}', + 'New' => 'Nové', + 'Next payment' => 'Ďalšia platba', + 'No Address' => 'Žiadna adresa', + 'No PDFs exist yet.' => 'Neexistuje zatiaľ žiadne PDF.', + 'No access given to any specific store management features.' => 'Nemáte prístup k žiadnym špecifickým funkciám správy obchodu.', + 'No additional payment currencies exist yet.' => 'Zatiaľ neexistujú žiadne doplnkové platobné meny.', + 'No address' => 'Žiadna adresa', + 'No billing address' => 'Žiadna fakturačná adresa', + 'No catalog pricing rule exists with the ID “{id}”' => 'Žiadne pravidlo stanovovania cien podľa katalógu s ID „{id}“ neexistuje', + 'No catalog pricing rules exist yet.' => 'Zatiaľ neexistujú žiadne pravidlá stanovovania cien podľa katalógu.', + 'No currency exists with the ID “{id}”' => 'Mena s identifikátorom „{id}“ neexistuje', + 'No customer email address exists on this cart.' => 'Pre tento košík chýba e-mailová adresa zákazníka.', + 'No description' => 'Žiadny popis', + 'No discount exists with the ID “{id}”' => 'Žiadna zľava s ID „{id}“ neexistuje', + 'No discounts exist yet.' => 'Žiadne zľavy zatiaľ neexistujú.', + 'No donation amount supplied.' => 'Nebola zadaná žiadna hodnota pre darovanie.', + 'No emails exist yet.' => 'Žiadne emaily zatiaľ neexistujú.', + 'No inventory changes made.' => 'Neboli vykonané žiadne zmeny v inventári.', + 'No inventory found.' => 'Nenašiel sa žiadny inventár.', + 'No inventory movements made.' => 'Nevykonali sa žiadne inventúrne pohyby.', + 'No inventory transactions for this location.' => 'Na tomto mieste sa nevykonávajú žiadne inventúrne operácie.', + 'No new customer selected.' => 'Nebol vybraný žiadny nový zákazník.', + 'No order history exists with the ID “{id}”' => 'Žiadna história objednávky s ID „{id}“ neexistuje', + 'No order status history items will exist until the cart becomes an order.' => 'Kým sa obsah košíku nepremení na objednávku, nebudú v histórii stavov objednávky žiadne položky.', + 'No payment source exists with the ID “{id}”' => 'Neexistuje zdroj platby s ID „{id}“', + 'No private Note.' => 'Žiadna súkromná poznámka.', + 'No product available.' => 'Žiadny produkt k dispozícii.', + 'No product types exist yet.' => 'Žiadne typy produktov zatiaľ neexistujú.', + 'No purchasable available.' => 'Žiadne položky na predaj k dispozícii.', + 'No sale exists with the ID “{id}”' => 'Žiadny výpredaj s ID „{id}“ neexistuje', + 'No sales exist yet.' => 'Žiadne zľavy zatiaľ neexistujú.', + 'No shipping address' => 'Žiadna dodacia adresa', + 'No shipping category exists with the ID “{id}”' => 'Kategória dopravy s identifikátorom „{id}“ neexistuje', + 'No shipping method exists with the ID “{id}”' => 'Žiadny spôsob dodania s ID „{id}“ neexistuje', + 'No shipping rule exists with the ID “{id}”' => 'Žiadne pravidlo dodania s ID „{id}“ neexistuje', + 'No shipping rules exist yet.' => 'Žiadne pravidlá dodania zatiaľ neexistujú.', + 'No shipping zone exists with the ID “{id}”' => 'Neexistuje žiadna zóna doručenia s ID „{id}“', + 'No stats available.' => 'Nie sú k dispozícii žiadne štatistiky.', + 'No subscription plan exists with the ID “{id}”' => 'Neexistuje žiadny plán prihlásení na odber s ID „{id}“', + 'No subscription plans exist yet.' => 'Doposiaľ neexistujú žiadne plány prihlásení na odber.', + 'No tax category exists with the ID “{id}”' => 'Žiadna daňová kategória s ID „{id}“ neexistuje', + 'No tax rate exists with the ID “{id}”' => 'Žiadna daňová sadzba s ID „{id}“ neexistuje', + 'No tax zone exists with the ID “{id}”' => 'Žiadna daňová zóna s ID „{id}“ neexistuje', + 'No transactions exist.' => 'Neexistujú žiadne transakcie.', + 'No user authenticated.' => 'Žiadny overený používateľ.', + 'No' => 'Nie', + 'None on hand' => 'Žiadne nie sú k dispozícii', + 'None' => 'Žiadne', + 'Not a valid address type' => 'Typ adresy nie je platný', + 'Not a valid credit card number.' => 'Toto nie je platné číslo platobnej karty.', + 'Not all SKUs are unique.' => 'Nie všetky jednotky SKU sú jedinečné.', + 'Note' => 'Poznámka', + 'Notes' => 'Poznámky', + 'Number of Coupons' => 'Počet kupónov', + 'Number' => 'Číslo', + 'Of the enabled sites above, which sites should products in this product type be saved to?' => 'Na ktoré z vyššie uvedených povolených webov by sa mali ukladať produkty tohto typu produktu?', + 'On Hand' => 'Dostupné', + 'Only allow this gateway to be used for zero value orders?' => 'Povoliť použitie tejto brány pre objednávky s nulovou hodnotou?', + 'Only match certain purchasables…' => 'Zhodujú sa len niektoré položky na predaj…', + 'Only match purchasables related to…' => 'Zhodujte sa len s položkami na predaj súvisiacimi s…', + 'Only orders with the following order statuses will be included. Leave blank to include all statuses.' => 'Zahrnuté budú len objednávky s nasledujúcimi stavmi objednávok. Ak chcete zahrnúť všetky stavy, nechajte prázdne.', + 'Only save product to the site they were created in' => 'Produkty ukladať len do webov, v ktorých boli vytvorené', + 'Options' => 'Možnosti', + 'Order Condition Formula' => 'Vzorec podmienky objednávky', + 'Order Description Format' => 'Formát opisu objednávky', + 'Order Details' => 'Informácie o objednávke', + 'Order Fields' => 'Polia Objednávky', + 'Order PDF Download Link' => 'Odkaz na stiahnutie PDF objednávky', + 'Order PDF Filename Format' => 'Formát názvu PDF súboru k objednávke', + 'Order Reference Number Format' => 'Formát referenčného čísla objednávky', + 'Order Settings' => 'Nastavenia Objednávky', + 'Order Site' => 'Web objednávok', + 'Order Status description.' => 'Popis stavu výpredaja.', + 'Order Status' => 'Stav Objednávky', + 'Order Statuses' => 'Stavy Objednávok', + 'Order can not be empty.' => 'Objednávka nemôže byť prázdna.', + 'Order count' => 'Počet objednávok', + 'Order customer data removed.' => 'Nariadiť odstránenie údajov o zákazníkoch.', + 'Order deleted.' => 'Objednávka zmazaná.', + 'Order fields saved.' => 'Polia objednávky uložené.', + 'Order not found.' => 'Objednávka sa nenašla.', + 'Order payment balance is {outstandingBalanceAsCurrency}. This is the maximum value that will be charged.' => 'Čiastka platby za objednávku je {outstandingBalanceAsCurrency}. Toto je maximálna hodnota, ktorá bude účtovaná.', + 'Order recalculated.' => 'Objednávka prepočítaná.', + 'Order status saved.' => 'Stav objednávky uložený.', + 'Order statuses reordered.' => 'Poradie stavu objednávok bolo zmenené.', + 'Order total shipping cost' => 'Celkové náklady na dodanie objednávky', + 'Order total taxable price (Line item subtotal + Total discounts + Total shipping)' => 'Celková zdaniteľná cena objednávky (medzisúčet riadkovej položky + suma zliav + celkové náklady na dodanie)', + 'Order' => 'Objednávka', + 'Orders (Legacy)' => 'Objednávky (staršia verzia)', + 'Orders deleted.' => 'Objednávky zmazané.', + 'Orders not restored.' => 'Objednávky neboli obnovené.', + 'Orders restored.' => 'Objednávky obnovené.', + 'Orders' => 'Objednávky', + 'Organization Name' => 'Názov organizácie', + 'Organization Tax ID' => 'Daňové identifikačné číslo organizácie', + 'Origin and destination cannot be the same.' => 'Pôvodné a cieľové miesto nemôžu byť rovnaké.', + 'Origin' => 'Pôvod', + 'Original Price' => 'Pôvodná cena', + 'Original price' => 'Pôvodná cena', + 'Original promotional price' => 'Pôvodná propagačná cena', + 'Other Languages' => 'Ostatné jazyky', + 'Other countries' => 'Ostatné krajiny', + 'Outgoing transfer from Transfer ID: ' => 'Odchádzajúci prevod z Transfer ID: ', + 'Overpaid' => 'Preplatené', + 'Overrides previous?' => 'Nahradiť predchádzajúce?', + 'PDF Attachment' => 'Príloha PDF', + 'PDF Template Path' => 'Cesta k šablóne PDF', + 'PDF saved.' => 'Súbor PDF uložený.', + 'PDF' => 'PDF', + 'PDFs & Emails' => 'PDF súbory a e-maily', + 'PDFs' => 'Súbory PDF', + 'Paid Amount' => 'Zaplatená suma', + 'Paid Status' => 'Stav zaplatenia', + 'Paid' => 'Zaplatené', + 'Paper Orientation' => 'Orientácia papiera', + 'Paper Size' => 'Veľkosť papiera', + 'Partial payment not allowed.' => 'Čiastočné platby nie sú povolené.', + 'Partial' => 'Čiastočný', + 'Past year' => 'Minulý rok', + 'Past {num} days' => 'Posledných {num} dní', + 'Pay {amount} of {currency} on the order.' => 'Zaplaťte čiastku {amount} v {currency} za objednávku.', + 'Pay' => 'Zaplatiť', + 'Payment Amount' => 'Suma platby', + 'Payment Currencies' => 'Platobné meny', + 'Payment Gateway' => 'Platobná brána', + 'Payment Method' => 'Spôsob Platby', + 'Payment error: {message}' => 'Chyba platby: {message}', + 'Payment method issue' => 'Problém so spôsobom platby', + 'Payment source created.' => 'Zdroj platby bol vytvorený.', + 'Payment source deleted.' => 'Zdroj platby bol odstránený.', + 'Payments' => 'Platby', + 'Pending' => 'Nevyriešené', + 'Per Email Address Discount Limit' => 'Obmedzenie počtu zliav na e-mailovú adresu', + 'Per Item Amount Off' => 'Zľavnená čiastka na položku', + 'Per Item Discount' => 'Zľava na položku', + 'Per Item Percentage Off' => 'Percentuálna zľava na položku', + 'Per Item Rate' => 'Sadzba Na Položku', + 'Per User Discount Limit' => 'Obmedzenie počtu zliav na osobu', + 'Percentage Rate' => 'Percentuálna Sadzba', + 'Phone (Alt)' => 'Telefón (alt.)', + 'Phone' => 'Telefón', + 'Pick a plan' => 'Zvoľte plán', + 'Plain Text Email Template Path' => 'Cesta k šablóne pre e-mail s obyčajným textom', + 'Plan' => 'Plán', + 'Plans reordered.' => 'Poradie plánov bolo zmenené.', + 'Portrait' => 'Portrét', + 'Post Date' => 'Dátum Príspevku', + 'Postal Code Formula' => 'Vzorec poštového smerovacieho čísla', + 'Pounds (lb)' => 'Libry (lb)', + 'Preview' => 'Náhľad', + 'Previous Status' => 'Predchádzajúci stav', + 'Price' => 'Cena', + 'Prices' => 'Ceny', + 'Pricing Rules' => 'Pravidlá stanovovania cien', + 'Pricing jobs are currently running.' => 'V súčasnosti prebiehajú cenové úlohy.', + 'Pricing' => 'Ceny', + 'Primary Billing Address' => 'Hlavná fakturačná adresa', + 'Primary Shipping Address' => 'Hlavná dodacia adresa', + 'Primary payment source updated.' => 'Primárny zdroj platby aktualizovaný.', + 'Primary' => 'Hlavný', + 'Private Note' => 'Súkromná poznámka', + 'Product Fields' => 'Polia produktu', + 'Product ID is required.' => 'Vyžaduje sa ID produktu.', + 'Product Template' => 'Šablóna Produktu', + 'Product Title Format' => 'Formát Názvu produktu', + 'Product Type' => 'Typ produktu', + 'Product Types' => 'Typy Produktov', + 'Product URI Format' => 'Formát URI produktu', + 'Product Variant' => 'Variant produktu', + 'Product Variants' => 'Varianty produktu', + 'Product type saved.' => 'Typ produktu uložený.', + 'Product type settings' => 'Nastavenia typu produktu', + 'Product' => 'Produkt', + 'Products and Variants deleted.' => 'Produkty a Varianty odstránené.', + 'Products not restored.' => 'Produkty neboli obnovené.', + 'Products restored.' => 'Produkty obnovené.', + 'Products' => 'Produkty', + 'Promotable' => 'Akciový', + 'Promotable?' => 'Akciový?', + 'Promotional Amount' => 'Propagačná čiastka', + 'Promotional Price' => 'Propagačná cena', + 'Purchasable Categories' => 'Zakúpiteľné kategórie', + 'Purchasable ID and Sale ID are required.' => 'Vyžaduje sa ID položky na predaj a ID zľavy.', + 'Purchasable ID is required.' => 'Vyžaduje sa ID položky na predaj.', + 'Purchasable Type' => 'Zakúpiteľný typ', + 'Purchasable' => 'Na predaj', + 'Purchase (Authorize and Capture Immediately)' => 'Nákup (Okamžitá Autorizácia a Zachytenie)', + 'Purchase Total' => 'Nákup Celkom', + 'Qty' => 'Množstvo', + 'Quality Control' => 'Kontrola kvality', + 'Quantity' => 'Množstvo', + 'Rate' => 'Sadzba', + 'Reassign {numOrders, plural, =1{order} other{orders}}' => 'Znovu prideliť {numOrders, plural, one {} few {objednávky} many {objednávok}=1{objednávku} other{objednávok}}', + 'Recalculate order' => 'Prepočítať objednávku', + 'Receive Inventory' => 'Prijatie zásob', + 'Receive Transfer' => 'Prijatie prevodu', + 'Receive' => 'Prijať', + 'Received' => 'Prijaté', + 'Recent Orders' => 'Posledné objednávky', + 'Recipient' => 'Príjemca', + 'Recover Cart' => 'Obnovenie košíka', + 'Reduce price' => 'Znížiť cenu', + 'Reduce the price by a fixed amount' => 'Znížiť cenu o pevnú sumu', + 'Reduce the price by a percentage of the original price' => 'Znížiť cenu o percentuálnu hodnotu pôvodnej ceny', + 'Reference' => 'Referencia', + 'Refresh payment history' => 'Obnoviť históriu platieb', + 'Refund note' => 'Poznámka k refundácii', + 'Refund payment' => 'Refundácia platby', + 'Refund' => 'Vrátenie peňazí', + 'Reject' => 'Zamietnuť', + 'Rejected' => 'Zamietnuté', + 'Relationship Type' => 'Typ vzťahu', + 'Removable included tax rates are only allowed for the default tax zone.' => 'Odnímateľné zahrnutie daňových sadzieb je povolené iba pre predvolenú daňovú oblasť.', + 'Remove address' => 'Odstrániť adresu', + 'Remove all shipping costs from the order' => 'Odstrániť všetky náklady na dopravu z objednávky', + 'Remove customer association and email from the {numOrders, plural, =1{order} other{orders}}. Optionally select additional customer data to remove below' => 'Odstrániť prepojenie so zákazníkom a e-mailovú adresu z {numOrders, plural, one {} few {objednávok} many {objednávok}=1{objednávky} other{objednávok}}. Podľa potreby nižšie vyberte ďalšie údaje o zákazníkoch, ktoré chcete odstrániť', + 'Remove customer data' => 'Odstrániť údaje o zákazníkoch', + 'Remove from price?' => 'Odstrániť z ceny?', + 'Remove shipping costs for matching items only' => 'Odstrániť náklady za dopravu len pre položky, ktoré sa zhodujú', + 'Remove the included tax when a valid organization tax ID is present?' => 'Odstrániť zahrnutú daň, ak je k dispozícii platné DIČ organizácie?', + 'Remove' => 'Odstrániť', + 'Removed' => 'Odstránené', + 'Repeat Customers' => 'Opakovaní zákazníci', + 'Reply To' => 'Odpovedať', + 'Require Billing Address At Checkout' => 'Vyžadovať fakturačnú adresu pri pokladni', + 'Require Coupon Code' => 'Vyžiadať kód kupónu', + 'Require Shipping Address At Checkout' => 'Vyžadovať adresu prepravy pri pokladni', + 'Require Shipping Method Selection At Checkout' => 'Vyžadovať výber spôsobu dopravy pri pokladni', + 'Require' => 'Vyžadovať', + 'Reserved' => 'Rezervované', + 'Reset usage' => 'Vynulovať počítadlo použitia', + 'Restrict the discount to only those orders where the customer has purchased a minimum total value of matching items.' => 'Obmedziť zľavu len na tie objednávky, kde zákazník nakúpil za minimálnu celkovú hodnotu zodpovedajúcich prvkov.', + 'Revenue Options' => 'Možnosti príjmov', + 'Revenue' => 'Výnos', + 'Rule' => 'Pravidlo', + 'Rules reordered.' => 'Poradie pravidiel upravené.', + 'SKU' => 'SKU', + 'Safety' => 'Bezpečnosť', + 'Sale Price' => 'Výpredajová cena', + 'Sale description.' => 'Popis výpredaja.', + 'Sale reordered.' => 'Poradie výpredaja bolo zmenené.', + 'Sale saved.' => 'Výpredaj uložený.', + 'Sale' => 'Výpredaj', + 'Sales deleted.' => 'Výpredaje odstránené.', + 'Sales updated.' => 'Zľavy aktualizované.', + 'Sales' => 'Výpredaje', + 'Save and continue editing' => 'Uložiť a pokračovať v úpravách', + 'Save and return to all orders' => 'Uložiť a vrátiť sa na všetky objednávky', + 'Save and set rules' => 'Uložiť a nastaviť pravidlá', + 'Save as a new rule' => 'Uložiť ako nové pravidlo', + 'Save product to all sites enabled for this product type' => 'Uložiť produkt na všetky stránky povolené pre tento typ produktu', + 'Save product to other sites in the same site group' => 'Uložiť produkt do iných webov v rovnakej skupine webov', + 'Save product to other sites with the same language' => 'Uložiť produkt do iných webov s rovnakým jazykom', + 'Save' => 'Uložiť', + 'Search customer…' => 'Vyhľadať zákazníka…', + 'Search inventory' => 'Vyhľadávanie v inventári', + 'Search or enter customer email…' => 'Vyhľadajte alebo zadajte e-mail zákazníka…', + 'Search…' => 'Hľadať…', + 'See Orders' => 'Zobraziť objednávky', + 'Select a gateway' => 'Vyberte bránu', + 'Select a tax category.' => 'Vybrať daňovú kategóriu.', + 'Select a tax zone. If empty, this rate will match anywhere.' => 'Vyberte daňovú zónu. Ak bude prázdna, použije sa táto hodnota všade.', + 'Select address' => 'Vybrať adresu', + 'Select an item' => 'Vyberte položku', + 'Select how the catalog pricing rule will be applied to the purchasable(s).' => 'Vyberte spôsob aplikovania pravidla stanovovania cien podľa katalógu na položku(y) na zakúpenie.', + 'Select how the sale will be applied to the purchasable(s).' => 'Vyberte spôsob aplikovania predajnej akcie na položku(y) na zakúpenie.', + 'Select product type' => 'Vyberte typ produktu', + 'Select the emails that will be sent when transitioning to this status.' => 'Vybrať emaily, ktoré budú poslané pri prechode na tento stav.', + 'Select what this rate should be applied to.' => 'Vyberte, na čo sa má táto sadzba uplatňovať.', + 'Send Email' => 'Poslať e-mail', + 'Send to custom recipient' => 'Odoslať vlastnému príjemcovi', + 'Send to the customer' => 'Poslať zákazníkovi', + 'Set Quantity' => 'Nastaviť množstvo', + 'Set default category' => 'Nastaviť predvolenú kategóriu', + 'Set default variant' => 'Nastaviť predvolený variant', + 'Set or Adjust' => 'Nastaviť alebo upraviť', + 'Set price' => 'Nastaviť cenu', + 'Set status' => 'Nastaviť stav', + 'Set the price to a flat amount' => 'Nastaviť cenu na pevnú sumu', + 'Set the price to a percentage of the original price' => 'Nastaviť cenu na percentuálnu hodnotu pôvodnej ceny', + 'Set the sale price to a flat amount' => 'Nastaviť cenu výpredaja na pevnú sumu', + 'Set the sale price to a percentage of the original price' => 'Nastaviť cenu výpredaja na percentuálnu hodnotu pôvodnej ceny', + 'Set to' => 'Nastaviť na', + 'Settings saved.' => 'Nastavenia uložené.', + 'Settings' => 'Nastavenia', + 'Share cart…' => 'Zdieľať košík…', + 'Shipping - Minimum cost is the shipping cost, if the order price is less than the shipping cost.' => 'Doprava – Minimálna cena za dopravu v prípade, že je hodnota objednávky nižšia ako cena za dopravu.', + 'Shipping Address Zone' => 'Zóna dodacej adresy', + 'Shipping Address' => 'Dodacia Adresa', + 'Shipping Business Name' => 'Expedičný obchodný názov', + 'Shipping Categories' => 'Kategórie dopravy', + 'Shipping Category Conditions' => 'Podmienky kategórie dopravy', + 'Shipping Category' => 'Kategória dopravy', + 'Shipping First Name' => 'Meno na spôsobe dopravy', + 'Shipping Full Name' => 'Celý expedičný názov', + 'Shipping Last Name' => 'Priezvisko na spôsobe dopravy', + 'Shipping Method' => 'Spôsob Dodania', + 'Shipping Methods' => 'Spôsoby Dodania', + 'Shipping Rule' => 'Pravidlo dopravy', + 'Shipping Zones' => 'Zóny doručenia', + 'Shipping address required.' => 'Požaduje sa dodacia adresa.', + 'Shipping categories deleted.' => 'Kategórie dopravy boli vymazané.', + 'Shipping category saved.' => 'Kategória dopravy sa uložila.', + 'Shipping category updated.' => 'Kategória dopravy bola aktualizovaná.', + 'Shipping costs added to the order as a whole before percentage, item, and weight rates are applied. Set to zero to disable this rate. The whole rule, including this base rate, will not match and apply if the cart only contains non-shippable items like digital products.' => 'Cena za dopravu pridaná k objednávke ako celok ešte predtým, ako sa použijú percentuálne sadzby, sadzby za položku a hmotnosť. Nastavte na nulu a táto sadzba sa nepoužije. Toto pravidlo, vrátane základnej sadzby, sa nepoužije v prípade, že košík obsahuje položky, ktoré nie je možné dopraviť, napríklad digitálne produkty.', + 'Shipping method saved.' => 'Spôsob dodania uložený.', + 'Shipping methods and rules deleted.' => 'Spôsoby a pravidlá dopravy boli odstránené.', + 'Shipping methods updated.' => 'Spôsob dopravy bol aktualizovaný.', + 'Shipping rule saved.' => 'Pravidlo dodania uložené.', + 'Shipping zone saved.' => 'Zóna doručenia uložená.', + 'Shipping' => 'Dodanie', + 'Short Number' => 'Krátke číslo', + 'Show Chart?' => 'Zobraziť graf?', + 'Show Order Count?' => 'Zobraziť počet objednávok?', + 'Show all prices' => 'Zobraziť všetky ceny', + 'Show archived gateways' => 'Zobraziť archivované brány', + 'Show order count line on chart.' => 'Zobraziť v grafe riadok s počtom objednávok.', + 'Show related sales' => 'Zobraziť súvisiaci výpredaj', + 'Show rule details' => 'Zobraziť podrobnosti pravidla', + 'Show the Dimensions and Weight fields for products of this type' => 'Zobraziť pole Rozmerov a Hmotnosti pre produkty tohto typu', + 'Show the Title field for products' => 'Zobraziť pole Názvu pre produkty', + 'Show the Title field for variants' => 'Zobraziť pole Názvu pre varianty', + 'Signed In' => 'Prihlásený', + 'Site Languages' => 'Jazyky webu', + 'Site store mapping saved.' => 'Mapovanie úložiska je uložené.', + 'Sites' => 'Lokality', + 'Slug' => 'Slug', + 'Snapshot' => 'Snímka', + 'Snapshots' => 'Snímky', + 'Some orders restored.' => 'Niektoré objednávky boli obnovené.', + 'Some products restored.' => 'Niektoré produkty boli obnovené.', + 'Some variants restored.' => 'Niektoré varianty boli obnovené.', + 'Something changed with the order before payment, please review your order and submit payment again.' => 'Pred platbou došlo k zmene v objednávke, skontrolujte, prosím, svoju objednávku a znova vykonajte platbu.', + 'Sorry, no matching options.' => 'Ľutujeme, nenašli sa žiadne zhody.', + 'Source - The purchasable relationship field is on the category' => 'Zdroj – pole nákupného vzťahu sa nachádza v kategórii', + 'Source' => 'Zdroj', + 'Specify a Twig condition that determines whether the discount should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Nastavte podmienku Twig, ktorá určí, či sa má pre danú objednávku uplatniť zľava. (Objednávku je možné volať pomocou premennej `order`.)', + 'Specify a Twig condition that determines whether the shipping rule should apply to a given order. (The order can be referenced via an `order` variable.)' => 'Nastavte podmienku Twig, ktorá určí, či sa má pre danú objednávku uplatniť pravidlo dopravy. (Objednávku je možné volať pomocou premennej `order`.)', + 'Start Date' => 'Dátum Začiatku', + 'State' => 'Štát', + 'Status Email Address' => 'Emailová Adresa pre Stav', + 'Status Emails' => 'Emaily pre Stavy', + 'Status History' => 'História stavov', + 'Status Updated.' => 'Stav bol aktualizovaný.', + 'Status change message' => 'Správa o zmene stavu', + 'Status' => 'Stav', + 'Stock' => 'Sklad', + 'Stops Processing?' => 'Zastaví spracovanie?', + 'Stops subsequent?' => 'Zastaví následné?', + 'Store Location' => 'Umiestnenie obchodu', + 'Store Management' => 'Manažment obchodu', + 'Store Markets' => 'Obchodné trhy', + 'Store Rule' => 'Pravidlo obchodu', + 'Store saved.' => 'Uložený obchod.', + 'Store' => 'Obchod', + 'Stores & Sites' => 'Obchody a lokality', + 'Stores' => 'Obchody', + 'Strategy to apply when an order is free or has a zero balance.' => 'Ktorú stratégiu použiť v prípade, že je objednávka zdarma alebo má nulový zostatok.', + 'Strategy to apply when calculating the minimum order price.' => 'Ktorú stratégiu použiť pri počítaní minimálnej ceny objednávky.', + 'Subject' => 'Predmet', + 'Subscribing user' => 'Používateľ prihlasujúci odber', + 'Subscription Fields' => 'Polia prihlásenia na odber', + 'Subscription Plans' => 'Plány prihlásení na odber', + 'Subscription Settings' => 'Nastavenie predplatného', + 'Subscription cancelled.' => 'Predplatné zrušené.', + 'Subscription date' => 'Dátum prihlásenia na odber', + 'Subscription fields saved.' => 'Polia prihlásenia na odber uložené.', + 'Subscription for {user} to {plan} prevented by a plugin.' => 'Doplnok zabránil prihláseniu na odber plánu {plan} pre používateľa {user}.', + 'Subscription plan saved.' => 'Plán prihlásení na odber bol uložený.', + 'Subscription plan' => 'Plán prihlásení na odber', + 'Subscription plans' => 'Plány prihlásení na odber', + 'Subscription reactivated.' => 'Predplatné opäť aktivované.', + 'Subscription reference' => 'Referenčné číslo prihlásenia na odber', + 'Subscription started.' => 'Predplatné spustené.', + 'Subscription switched.' => 'Predplatné zmenené.', + 'Subscription to “{plan}”' => 'Prihlásenie na odber plánu „{plan}“', + 'Subscription' => 'Prihlásenie na odber', + 'Subscriptions on hold' => 'Predplatné pozastavené', + 'Subscriptions' => 'Prihlásenia na odber', + 'Suppress emails' => 'Odstrániť e-maily', + 'Switch plan' => 'Prepnúť plán', + 'Switch' => 'Prepnúť', + 'System' => 'Systém', + 'Table Columns' => 'Stĺpce tabuľky', + 'Target - The category relationship field is on the purchasable' => 'Cieľ – Pole kategórie vzťahov je na položke na predaj', + 'Tax & Shipping' => 'Daň a doprava', + 'Tax (inc)' => 'Daň (vr.)', + 'Tax Categories' => 'Daňové Kategórie', + 'Tax Category' => 'Daňová Kategória', + 'Tax Rates' => 'Daňové Sadzby', + 'Tax Zone' => 'Daňová Zóna', + 'Tax Zones' => 'Daňové Zóny', + 'Tax categories deleted.' => 'Daňové kategórie boli vymazané.', + 'Tax category saved.' => 'Daňová kategória uložená.', + 'Tax category updated.' => 'Daňová kategória bola aktualizovaná.', + 'Tax rate saved.' => 'Daňová sadzba uložená.', + 'Tax rates updated.' => 'Daňové sadzby boli aktualizované.', + 'Tax zone saved.' => 'Daňová zóna uložená.', + 'Tax' => 'Daň', + 'Taxable Subject' => 'Zdaniteľný Subjekt', + 'Template Path' => 'Cesta Šablóny', + 'That handle is already in use' => 'Tento popisovač sa už používa', + 'That handle is already in use.' => 'Tento popisovač sa už používa.', + 'The PDF to attach to this email.' => 'PDF pre priloženie do e-mailu.', + 'The URL to the page for updating billing details for a subscription, as well as handling 3DS authentication.' => 'Adresa URL stránky na aktualizáciu fakturačných údajov predplatného, ako aj na spracovanie overovania 3DS.', + 'The address provided is outside the store’s market.' => 'Uvedená adresa sa nachádza mimo trhu obchodu.', + 'The amount of discount that is applied to the whole order. This amount is spread across line items in order of highest price to lowest price, until the discount is used up.' => 'Čiastka zľavy, ktorá je použitá na celú objednávku. Táto čiastka sa rozdelí medzi riadkové položky v poradí od najvyššej ceny po najnižšiu, až kým sa nevyužije celá zľava.', + 'The base discount can only discount items in the cart to down to zero until it is used up, it can not make the order negative.' => 'Základná zľava môže zľaviť položky v košíku maximálne na hodnotu nula, až kým nebude celá využitá. Nie je možné dostať objednávku do záporného čísla.', + 'The cart recovery link is invalid. Please request a new one.' => 'Odkaz na obnovenie košíka je neplatný. Požiadajte o nový.', + 'The conversion rate that will be used when converting an amount to this currency. For example, if an item costs {amount1}, a conversion rate of {rate} would result in {amount2} in the alternate currency.' => 'Konverzný kurz, ktorý sa použije pri konverzii nejakej sumy do tejto meny. Napríklad, ak nejaká položka stojí {amount1}, na základe konverzného kurzu {rate} by v druhej mene stála {amount2}.', + 'The countries that orders are allowed to be placed from.' => 'Krajiny, z ktorých je povolené zadávať objednávky.', + 'The coupon "{code}" has exceeded its usage limit of {limit}.' => 'Kupón „{code}“ prekročil limit použitia {limit}.', + 'The customer for this order has been deleted.' => 'Zákazník, na ktorého sa táto objednávka vzťahuje, bol odstránený.', + 'The default shipping category is automatically available to all product types.' => 'Predvolená kategória dopravy je automaticky dostupná pre všetky typy produktov.', + 'The discount "{name}" has exceeded its total usage limit of {limit}.' => 'Zľava „{name}“ prekročila limit použitia {limit}.', + 'The download link has expired. Please request a new one.' => 'Platnosť odkazu na stiahnutie vypršala. Požiadajte o nový odkaz.', + 'The email address that order status emails are sent from. Leave blank to use the System Email Address defined in Craft’s General Settings.' => 'Emailová adresa, z ktorej sú odosielané emaily o stave objednávky. Prázdne, ak sa má použiť systémová emailová adresa definovaná vo všeobecných nastaveniach Craft-u.', + 'The entry that contains the description for this subscription’s plan.' => 'Záznam, ktorý obsahuje popis tohto plánu prihlásení na odber.', + 'The flat value which should discount each item. i.e “3” for $3 off each item.' => 'Fixná hodnota, ktorá má zľaviť každú položku, t.j. „3“ pre zľavu €3 pre každú položku.', + 'The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.' => 'Formát použitý na generovanie nových kupónov, napr. {example}. Akékoľvek znaky „#“ budú nahradené náhodným písmenom.', + 'The from and to inventory locations must be different.' => 'Miesta inventúry z a do sa musia líšiť.', + 'The inventory locations this store uses.' => 'Inventárne miesta, ktoré tento obchod používa.', + 'The item is not enabled for sale.' => 'Túto položku nie je povolené zahrnúť do predaja.', + 'The language the order was made in.' => 'Jazyk, v ktorom bola objednávka uskutočnená.', + 'The language to be used when this email is rendered.' => 'Jazyk, ktorý sa má použiť pri zobrazení tohto e-mailu.', + 'The maximum number of levels this product type can have. Leave blank if you don’t care.' => 'Maximálny počet úrovní, ktoré môže tento typ produktu obsahovať. Ak na tom nezáleží, ponechajte políčko prázdne.', + 'The maximum the customer should spend on shipping. Set to zero to disable.' => 'Maximálna suma, ktorú by mal zákazník minúť za dopravu. Vypnete zadaním nuly.', + 'The minimum the customer should spend on shipping. Set to zero to disable.' => 'Minimálna suma, ktorú by mal zákazník minúť za dopravu. Vypnete zadaním nuly.', + 'The order is not valid.' => 'Neplatná objednávka.', + 'The payment gateway that will be used for the subscription plan.' => 'Platobná brána, ktorá sa použije pre plán prihlásení na odber.', + 'The percentile value which should discount each item. i.e. {ex1} for {ex2} off. Percentages are rounded to 2 decimal places.' => 'Percentuálna hodnota, ktorá má zľaviť každú položku, t.j. {ex1} pre zľavu {ex2} pre každú položku. Percentá sú zaokrúhlené na 2 desatinné miesta.', + 'The previously-selected shipping method is no longer available.' => 'Predtým zvolený spôsob dopravy už nie je dostupný.', + 'The price of {description} increased from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Cena {description} sa zvýšila z {originalSalePriceAsCurrency} na {newSalePriceAsCurrency}', + 'The price of {description} was reduced from {originalSalePriceAsCurrency} to {newSalePriceAsCurrency}' => 'Cena {description} sa znížila z {originalSalePriceAsCurrency} na {newSalePriceAsCurrency}', + 'The primary currency cannot be changed after orders are placed.' => 'Hlavná mena nemôže byť po zadaní objednávok zmenená.', + 'The purchasable defines the relationship' => 'Položka na predaj definuje vzťah', + 'The purchasable is related by another element' => 'Položka na predaj je spojená s ďalším prvkom', + 'The recipient of the email. Twig code can be used here.' => 'Príjemca e-mailu. Môže byť použitý Twig kód.', + 'The reply to email address. Leave blank for normal reply to of email sender. Twig code can be used here.' => 'E-mailová adresa pre odpoveď. Ak chcete použiť normálnu adresu pre odpoveď, ponechajte toto pole prázdne. Môže byť použitý Twig kód.', + 'The site the order was made in.' => 'Miesto, kde bola objednávka zadaná.', + 'The site to be used when this email is rendered.' => 'Miesto, ktoré sa má použiť pri zobrazení tohto e-mailu.', + 'The subject line of the email. Twig code can be used here.' => 'Riadok predmetu e-mailu. Môže byť použitý Twig kód.', + 'The template that the PDF should be generated from.' => 'Šablóna, z ktorej sa má generovať PDF súbor.', + 'The template to be used for HTML emails.' => 'Šablóna ktorá sa má použiť pre HTML emaily.', + 'The template to be used for plain text emails. Twig code can be used here.' => 'Šablóna, ktorá sa má použiť pre e-maily s obyčajným textom. Môže byť použitý Twig kód.', + 'The template to use when a product’s URL is requested.' => 'Šablóna, ktorá sa má použiť pri požiadavke URL adresy produktu.', + 'The total number of order adjustments changed.' => 'Celkový počet úprav objednávky sa zmenil.', + 'The total price of the order changed.' => 'Celková cena objednávky sa zmenila.', + 'The total quantity of items within the order changed.' => 'Celkové množstvo položiek v objednávke sa zmenilo.', + 'The unique SKU of the donation purchasable.' => 'Jedinečné SKU pre predajný dar.', + 'The unit of measurement that should be used when specifying product dimensions.' => 'Merná jednotka, ktorá má byť použitá pri určovaní rozmerov produktu.', + 'The unit of measurement that should be used when specifying product weights.' => 'Merná jednotka, ktorá má byť použitá pri určovaní váhy produktu.', + 'The webhook URL for this gateway.' => 'URL pre webhook pre túto bránu.', + 'The “From” name that will be used when sending order status emails. Leave blank to use the Sender Name defined in Craft’s General Settings.' => 'Meno „Od“, ktoré bude použité pri odosielaní emailov o stave objednávky. Prázdne, ak sa má použiť meno odosielateľa definované vo všeobecných nastaveniach Craft-u.', + 'There are errors on the order' => 'Objednávka obsahuje chyby', + 'There are only {num} “{description}” items left in stock.' => 'Počet zvyšných položiek „{description}“ na sklade je {num}.', + 'There aren’t any product types to select yet.' => 'Zatiaľ nie je možné vybrať žiadne typy produktov.', + 'There is no gateway or payment source available for use with this order.' => 'Pre túto objednávku nie je k dispozícii žiadna použiteľná brána alebo zdroj platby.', + 'There is no gateway selected that supports payment sources.' => 'Nie je vybratá žiadna brána, ktorá podporuje zdroje platby.', + 'There is no shipping method selected for this order.' => 'Pre túto objednávku nie je vybraný žiadny spôsob doručenia.', + 'This URL will load the cart into the user’s session, making it the active cart.' => 'Tento odkaz URL nahrá košík do relácie používateľa a aktivuje ho.', + 'This action is not allowed for the current user.' => 'Táto akcia nie je pre aktuálneho používateľa povolená.', + 'This category will be used as the default for all purchasables in this store.' => 'Táto kategória sa bude používať ako predvolená pre všetky nákupy v tomto obchode.', + 'This coupon is for registered users and limited to {limit} uses.' => 'Tento kupón je pre registrovaných používateľov a je obmedzený na {limit} použití.', + 'This coupon is limited to {limit} uses.' => 'Tento kupón je obmedzený na {limit} použití.', + 'This coupon requires an email address.' => 'Tento kupón vyžaduje e-mailovú adresu.', + 'This gateway does not support that functionality.' => 'Táto brána nepodporuje danú funkciu.', + 'This is being overridden by the {setting} config setting in `config/{file}.php`.' => 'Toto je prepísané nastavením konfigurácie {setting} v `config/{file}.php`.', + 'This is the address where your store is located. It may be used by various plugins to determine things like shipping and taxes. It could also be used in PDF receipts.' => 'Toto je adresa umiestnenia obchodu. Pomocou nej môžu rôzne doplnky určiť napríklad dodacie podmienky a dane. Používa sa tiež v potvrdenkách vo formáte PDF.', + 'This is the default PDF that will be rendered when requesting the order PDF.' => 'Toto je predvolený súbor PDF, ktorý sa vykreslí pri žiadosti o súbor PDF objednávky.', + 'This is the last location for the {store} store.' => 'Toto je posledné miesto pre obchod {store}.', + 'This month' => 'Tento mesiac', + 'This order has unsaved changes.' => 'Táto objednávka obsahuje neuložené zmeny.', + 'This week' => 'Tento týždeň', + 'This year' => 'Tento rok', + 'Times Used' => 'Počet Použití', + 'Title' => 'Názov', + 'To' => 'Komu', + 'Today' => 'Dnes', + 'Too many variants for this product.' => 'Príliš veľa variantov pre tento produkt.', + 'Top Customers by Average Order' => 'Top zákazníci podľa priemernej objednávky', + 'Top Customers by Total Revenue' => 'Top zákazníci podľa celkového príjmu', + 'Top Customers' => 'Top zákazníci', + 'Top Product Types by Qty Sold' => 'Top typy produktov podľa počtu predaných kusov', + 'Top Product Types by Revenue' => 'Top typy produktov podľa príjmu', + 'Top Product Types' => 'Top typy produktov', + 'Top Products by Qty Sold' => 'Top produkty podľa počtu predaných kusov', + 'Top Products by Revenue' => 'Top produkty podľa príjmu', + 'Top Products' => 'Top produkty', + 'Top Purchasables by Qty Sold' => 'Top položky na predaj podľa počtu predaných kusov', + 'Top Purchasables by Revenue' => 'Top položky na predaj podľa príjmu', + 'Top Purchasables' => 'Top položky na predaj', + 'Total ' => 'Celkom ', + 'Total Discount Use Limit' => 'Celkový limit na využitie zľavy', + 'Total Discount' => 'Celková zľava', + 'Total Included Tax' => 'Celková započítaná daň', + 'Total Orders by Billing Country' => 'Celkový počet objednávok podľa krajiny fakturácie', + 'Total Orders by Country' => 'Celkový počet objednávok podľa krajiny', + 'Total Orders by Shipping Country' => 'Celkový počet objednávok podľa krajiny dopravy', + 'Total Orders' => 'Celkový počet objednávok', + 'Total Paid' => 'Celkom Uhradené', + 'Total Price' => 'Celková Cena', + 'Total Qty' => 'Celkové množstvo', + 'Total Revenue' => 'Celkový príjem', + 'Total Shipping' => 'Celkové náklady na dopravu', + 'Total Tax' => 'Celková daň', + 'Total Weight' => 'Celková hmotnosť', + 'Total' => 'Celkom', + 'Track Inventory' => 'Sledovanie zásob', + 'Transaction Hash' => 'Hodnota hash transakcie', + 'Transaction ID' => 'ID transakcie', + 'Transaction captured successfully: {message}' => 'Transakcia úspešne zachytená: {message}', + 'Transaction refunded successfully: {message}' => 'Transakcia úspešne vrátená: {message}', + 'Transactions' => 'Transakcie', + 'Transfer Fields' => 'Polia na prevod', + 'Transfer Items' => 'Položky na prevod', + 'Transfer Settings' => 'Nastavenia prevodu', + 'Transfer Status' => 'Stav prevodu', + 'Transfer fields saved.' => 'Uložené polia na prevod.', + 'Transfer must have at least one item.' => 'Prevod musí obsahovať aspoň jednu položku.', + 'Transfer' => 'Prevod', + 'Transfers' => 'Prevody', + 'Trial days credited' => 'Priznané dni skúšobnej verzie', + 'Trial expiration' => 'Vypršanie platnosti skúšobnej verzie', + 'Trial expiry date' => 'Dátum exspirácie skúšobnej verzie', + 'Type not in allowed options.' => 'Typ nie je možné použiť v možnostiach.', + 'Type' => 'Typ', + 'URI' => 'URI', + 'Unable to cancel subscription at this time.' => 'Prihlásenie na odber sa momentálne nedá zrušiť.', + 'Unable to complete order: another request is already in progress.' => 'Objednávku nie je možné dokončiť: práve prebieha iná požiadavka.', + 'Unable to find variant.' => 'Nie je možné nájsť variant.', + 'Unable to generate coupon codes: {message}' => 'Nie je možné generovať kódy kupónov: {message}', + 'Unable to make payment at this time.' => 'Platba sa nedá aktuálne uskutočniť.', + 'Unable to modify subscription at this time.' => 'Prihlásenie na odber sa aktuálne nedá upraviť.', + 'Unable to reactivate subscription at this time.' => 'Prihlásenie na odber sa aktuálne nedá znova aktivovať.', + 'Unable to reassign orders.' => 'Objednávky nie je možné prerozdeliť.', + 'Unable to remove order data.' => 'Údaje o objednávke sa nepodarilo odstrániť.', + 'Unable to retrieve Sale and Purchasable.' => 'Nebolo možné obnoviť zľavu a položky na predaj.', + 'Unable to retrieve cart.' => 'Košík sa nedá obnoviť.', + 'Unable to retrieve customer.' => 'Nebolo možné obnoviť zákazníka.', + 'Unable to retrieve load cart URL' => 'Nebolo možné získať odkaz URL pre nahranie košíka', + 'Unable to retrieve payment source.' => 'Nie je možné načítať zdroj platby.', + 'Unable to set default shipping category.' => 'Predvolená kategória dopravy sa nedala nastaviť.', + 'Unable to set default tax category.' => 'Predvolená daňová kategória sa nedala nastaviť.', + 'Unable to set primary payment source.' => 'Nie je možné nastaviť primárny zdroj platby.', + 'Unable to start the subscription. Please check your payment details.' => 'Prihlásenie na odber nie je možné spustiť. Skontrolujte platobné údaje.', + 'Unable to subscribe at this time.' => 'Aktuálne nie je možné prihlásiť odber.', + 'Unable to update cart.' => 'Košík sa nedá aktualizovať.', + 'Unable to validate address.' => 'Nie je možné overiť adresu.', + 'Unit Price' => 'Jednotková cena', + 'Unit price (minus discounts)' => 'Jednotková cena (znížená o zľavy)', + 'Units' => 'Jednotky', + 'Unpaid' => 'Nezaplatené', + 'Unsubscribe' => 'Odhlásiť odber', + 'Update Address' => 'Aktualizovať adresu', + 'Update Order Status' => 'Aktualizovať stav objednávky', + 'Update Order Status…' => 'Aktualizovať stav objednávky…', + 'Update order' => 'Aktualizovať objednávku', + 'Update subscription' => 'Aktualizovať predplatné', + 'Update' => 'Aktualizovať', + 'Updated By' => 'Aktualizoval(a)', + 'Updated committed stock successfully.' => 'Úspešne aktualizované viazané zásoby.', + 'Updated' => 'Aktualizované', + 'Use Billing Address For Tax' => 'Použitie fakturačnej adresy pre daň', + 'Use as the primary billing address' => 'Používajte ako hlavnú fakturačnú adresu', + 'Use as the primary shipping address' => 'Používajte ako hlavnú dodaciu adresu', + 'Used By Tax Rates' => 'Používané daňovými sadzbami', + 'Used by Tax Rates' => 'Používané daňovými sadzbami', + 'User Groups' => 'Skupiny užívateľov', + 'User not found.' => 'Používateľ sa nenašiel.', + 'User' => 'Používateľ', + 'Uses' => 'Používa', + 'Validate Business Tax ID as Vat ID' => 'Overenie daňového identifikačného čísla podniku ako identifikačného čísla DPH', + 'Validating condition syntax' => 'Overuje sa platnosť syntaxe', + 'Validating formula syntax' => 'Overuje sa syntax vzorca', + 'Variant Fields' => 'Polia variantu', + 'Variant Has Untracked Stock' => 'Variant má nesledované zásoby', + 'Variant Price' => 'Cena variantu', + 'Variant SKU' => 'SKU variantu', + 'Variant Search' => 'Vyhľadávanie variantov', + 'Variant Stock' => 'Zásoby variantu', + 'Variant Title Format' => 'Formát Názvu Varianty', + 'Variant Tracks Stock' => 'Variant skladových zásob', + 'Variant UI Label Format' => 'Formát označenia variantu používateľského rozhrania', + 'Variant has no product.' => 'Variant nemá žiadny produkt.', + 'Variants not restored.' => 'Varianty neboli obnovené.', + 'Variants restored.' => 'Varianty boli obnovené.', + 'Variants' => 'Varianty', + 'View customer' => 'Zobraziť zákazníka', + 'View order' => 'Zobraziť objednávku', + 'View product type - {productType}' => 'Zobraziť typ produktu - {productType}', + 'View user' => 'Zobraziť používateľa', + 'View' => 'Zobraziť', + 'Warning, deleting this currency will stop all payments and refunds in this currency, are you sure you want to delete “{name}”?' => 'Upozornenie. Zmazanie tejto meny pozastaví všetky platby a vrátenie platieb v tejto mene. Naozaj chcete zmazať „{name}“?', + 'Web' => 'Web', + 'Webhook URL' => 'URL pre webhook', + 'Weight ({unit})' => 'Hmotnosť ({unit})', + 'Weight Rate' => 'Váhová Sadzba', + 'Weight Unit' => 'Jednotka Hmotnosti', + 'Weight' => 'Váha', + 'What product URIs should look like for the site.' => 'Ako by mali vyzerať identifikátory URI produktov pre daný web.', + 'What the auto-generated product titles should look like. You can include tags that output product properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Ako majú vyzerať automaticky generované názvy produktov. Možno zahrnúť značky, ktoré zobrazia vlastnosti produktov, ako je {ex1} alebo {ex2}. Všetky vlastné polia musia byť nastavené na povinné.', + 'What the auto-generated variant titles should look like. You can include tags that output variant properties, such as {ex1} or {ex2}. All custom fields used must be set to required.' => 'Ako majú vyzerať automaticky generované názvy variant. Možno zahrnúť značky, ktoré zobrazia vlastnosti variant, ako je {ex1} alebo {ex2}. Všetky vlastné polia musia byť nastavené na povinné.', + 'What the order PDF filename should look like (sans extension). You can include tags that output order properties, such as {ex1} or {ex2}.' => 'Ako by mal vyzerať názov PDF súboru k objednávkam (bez prípony). Môžete pridať štítky, ktorých výstupom sú vlastnosti objednávky, ako napríklad {ex1} alebo {ex2}.', + 'What the unique auto-generated SKUs should look like, when a SKU field is submitted without a value. You can include tags that output properties, such as {ex1} or {ex2}' => 'Ako má vyzerať jedinečné automaticky generované SKU, keď je pole SKU odoslané prázdne. Možno zahrnúť značky, ktoré zobrazia vlastnosti, ako je {ex1} alebo {ex2}', + 'What this PDF will be called in the control panel.' => 'Ako sa bude tento PDF súbor volať v ovládacom paneli.', + 'What this catalog pricing rule will be called in the control panel.' => 'Ako sa bude toto pravidlo stanovovania cien podľa katalógu volať v ovládacom paneli.', + 'What this discount will be called in the control panel.' => 'Ako sa bude táto zľava volať v ovládacom paneli.', + 'What this email will be called in the control panel.' => 'Ako sa bude tento e-mail volať v ovládacom paneli.', + 'What this product type will be called in the control panel.' => 'Ako sa bude tento typ produktu volať v ovládacom paneli.', + 'What this sale will be called in the control panel.' => 'Ako sa bude tento výpredaj volať v ovládacom paneli.', + 'What this shipping category will be called in the control panel.' => 'Ako sa bude táto kategória dopravy volať v ovládacom paneli.', + 'What this shipping rule will be called in the control panel.' => 'Ako sa bude toto pravidlo dopravy volať v ovládacom paneli.', + 'What this shipping zone will be called in the control panel.' => 'Ako sa bude táto zóna doručenia volať v ovládacom paneli.', + 'What this status will be called in the control panel.' => 'Ako sa bude tento stav volať v ovládacom paneli.', + 'What this subscription plan will be called in the control panel.' => 'Ako sa bude toto predplatné volať v ovládacom paneli.', + 'What this tax category will be called in the control panel.' => 'Ako sa bude táto daňová kategória volať v ovládacom paneli.', + 'What this tax zone will be called in the control panel.' => 'Ako sa bude táto daňová zóna volať v ovládacom paneli.', + 'When this discount is applied to an order, which line items should be discounted?' => 'Keď sa táto zľava uplatní na objednávku, ktoré položky by mali byť zľavnené?', + 'Whether the first available shipping method option should be set automatically on carts.' => 'Či sa má v košíkoch automaticky nastaviť prvá dostupná možnosť spôsobu dopravy.', + 'Whether the user’s primary payment source should be set automatically on new carts.' => 'Či sa má pri nových košíkoch automaticky nastaviť primárny zdroj platby používateľa.', + 'Whether the user’s primary shipping and billing addresses should be set automatically on new carts.' => 'Či sa má v nových košíkoch automaticky nastaviť primárna dodacia a fakturačná adresa používateľa.', + 'Whether this catalog pricing rule should be available for use, regardless of other conditions.' => 'Či by toto pravidlo stanovovania cien podľa katalógu malo byť k dispozícii na použitie bez ohľadu na ostatné podmienky.', + 'Whether this sale should be available for use, regardless of other conditions.' => 'Určuje, či má byť táto predajná akcia dostupná na použitie bez ohľadu na ostatné podmienky.', + 'Which data to display in the name column in the results table.' => 'Ktoré údaje zobrazovať v stĺpci s názvom v tabuľke výsledkov.', + 'Which product types should this category be available to?' => 'Pre ktoré typy produktov má byť táto kategória dostupná?', + 'Which template should be loaded when a product’s URL is requested.' => 'Šablóna, ktorá sa ma načítať, keď je vyžiadaná adresa URL produktu.', + 'Width ({unit})' => 'Šírka ({unit})', + 'Width' => 'Šírka', + 'YYYY' => 'RRRR', + 'Yes' => 'Áno', + 'You are not allowed to add a line item.' => 'Nemáte oprávnenie pridať riadkovú položku.', + 'You currently have no emails configured to select for this status.' => 'Pre výber tohto stavu nemáte momentálne nastavený žiadny e-mail.', + 'You do not have permission to load this cart.' => 'Nemáte oprávnenie na načítanie tohto košíka.', + 'You must set up at least one gateway that supports subscriptions first.' => 'Najprv musíte nastaviť aspoň jednu bránu, ktorá podporuje prihlásenia na odber.', + 'You must be logged in or provide a valid token to load this cart.' => 'Na načítanie tohto košíka sa musíte prihlásiť alebo zadať platný token.', + 'You must be signed in to create a payment source.' => 'Ak chcete vytvoriť zdroj platby, musíte byť prihlásení.', + 'You must be signed in to set a primary payment source.' => 'Ak chcete nastaviť primárny zdroj platby, musíte byť prihlásení.', + 'You must make a payment to complete the order.' => 'Ak chcete dokončiť túto objednávku, musíte ju zaplatiť.', + 'Your Cart Recovery Link' => 'Váš odkaz na obnovenie košíka', + 'Your Order PDF Download Link' => 'Odkaz na stiahnutie PDF vašej objednávky', + 'Your order is empty' => 'Vaša objednávka je prázdna', + 'ZIP file' => 'Súbor ZIP', + 'Zero - Minimum price is zero if discounts are greater than the order value.' => 'Nula – Minimálna cena je nula v prípade, že sú zľavy vyššie ako hodnota objednávky.', + 'Zip Code' => 'PSČ', + 'all' => 'všetky', + 'any' => 'akékoľvek', + 'average order total' => 'priemerná cena objednávky', + 'billing address' => 'fakturačná adresa', + 'donation' => 'darovanie', + 'donations' => 'dary', + 'info' => 'informácie', + 'inventory location' => 'umiestnenie zásob', + 'new customers' => 'noví zákazníci', + 'on hand' => 'dostupné', + 'only' => 'len', + 'order' => 'objednať', + 'orders' => 'objednávky', + 'price' => 'cena', + 'prices' => 'ceny', + 'product variant' => 'variant produktu', + 'product variants' => 'varianty produktu', + 'product' => 'produkt', + 'products' => 'produkty', + 'repeat customers' => 'opakovaní zákazníci', + 'shipping address' => 'dodacia adresa', + 'shippingSameAsBilling and billingSameAsShipping can’t both be set.' => 'Nie je možné nastaviť súčasne položku shippingSameAsBilling aj položku billingSameAsShipping.', + 'subscription' => 'predplatné', + 'subscriptions' => 'predplatné', + 'to' => 'na', + 'transfer' => 'prevod', + 'transfers' => 'prevody', + '{amount} included' => 'vrátane {amount}', + '{count} Unfulfilled Orders' => 'Nesplnené objednávky: {count}', + '{description} is no longer available.' => '{description} už nie je dostupný.', + '{description} only has {stock} in stock.' => 'Počet kusov {description} na sklade je už len {stock}.', + '{from} to {to}' => '{from} až {to}', + '{name} (Primary)' => '{name} (Hlavná)', + '{name} (Trashed)' => '{name} (Zahodené do koša)', + '{name} catalog price' => '{name} katalógová cena', + '{num, plural, =1{Order} other{Orders}} updated.' => '{num, plural, one {} few {objednávky} many {objednávok}=1{objednávka} other{objednávok}} aktualizovaná/aktualizovaných.', + '{numOrders, number} {numOrders, plural, =1{order is} other{orders are}} associated with the {numUsers, plural, =1{user} other{users}}.' => '{numOrders, number} {numOrders, plural, one {} few {objednávky sú priradené} many {objednávok je priradených}=1{objednávka je priradená} other{objednávok je priradených}} k {numUsers, plural, one {} few {používateľom} many {používateľom}=1{používateľovi} other{používateľom}}.', + '{numSubscriptions, number} {numSubscriptions, plural, =1{subscription is} other{subscriptions are}} activated for the {numUsers, plural, =1{user} other{users}}.' => '{numSubscriptions, number} {numSubscriptions, plural, one {} few {predplatné sú aktivované} many {predplatných je aktivovaných}=1{predplatné je aktivované} other{predplatných je aktivovaných}} pre {numUsers, plural, one {} few {používateľov} many {používateľov}=1{používateľa} other{používateľov}}.', + '{number} more…' => 'Ešte {number}…', + '{pct} off the discounted item price' => '{pct} zo zľavnenej ceny položky', + '{pct} off the original item price' => '{pct} z pôvodnej ceny položky', + '{storeNames} {num, plural, =1{has} other{have}} not been assigned to a site.' => '{storeNames} {num, plural, one {} few {nemajú} many {nemá}=1{nemá} other{nemá}} priradenú lokalitu.', + '{total} in total revenue' => 'celkový príjem {total}', + '{total} orders' => '{total} objednávok', + '{total} saleable across {locationCount} location(s)' => '{total} predajné na {locationCount} mieste (miestach)', + '{uses} uses across {emails} email addresses' => '{uses} použití pre e-mailové adresy {emails}', + '{uses} uses across {users} users' => '{uses} použití pre použivateľov {users}', + '“{description}” is currently out of stock.' => 'Produkt „{description}“ je momentálne vypredaný.', + '“{key}” has invalid JSON' => '„{key}“ obsahuje neplatný JSON', +]; diff --git a/.env.example b/legacy/.env.example similarity index 100% rename from .env.example rename to legacy/.env.example diff --git a/.nvmrc b/legacy/.nvmrc similarity index 100% rename from .nvmrc rename to legacy/.nvmrc diff --git a/legacy/package.json b/legacy/package.json new file mode 100644 index 0000000000..51a9819d39 --- /dev/null +++ b/legacy/package.json @@ -0,0 +1,35 @@ +{ + "name": "@craftcms/commerce-legacy", + "private": true, + "main": "webpack.config.js", + "browserslist": [ + "extends @craftcms/browserslist-config" + ], + "scripts": { + "build": "webpack --node-env=production --progress", + "dev": "webpack --node-env=dev --mode=development --progress", + "serve": "webpack-dev-server --node-env=development" + }, + "devDependencies": { + "@craftcms/vue": "^1.0.0", + "@craftcms/webpack": "^1.1.0", + "axios": "^0.28.0", + "chart.js": "^2.9.4", + "chartjs-adapter-moment": "^0.1.2", + "craftcms-sass": "^3.5.6", + "deepmerge": "^4.2.2", + "lodash.debounce": "^4.0.8", + "lodash.find": "^4.6.0", + "lodash.isequal": "^4.5.0", + "lodash.isobjectlike": "^4.0.0", + "moment": "^2.29.4", + "prismjs": "^1.27.0", + "vue": "catalog:legacy", + "vue-loader": "^15.11.1", + "vue-prism-editor": "^0.6.1", + "vue-select": "^3.20.0", + "vue-template-compiler": "catalog:legacy", + "vuelidate": "^0.7.7", + "vuex": "^3.6.2" + } +} diff --git a/legacy/webpack.config.js b/legacy/webpack.config.js new file mode 100644 index 0000000000..728964c57c --- /dev/null +++ b/legacy/webpack.config.js @@ -0,0 +1,10 @@ +const path = require('path'); +const {getConfigs} = require('@craftcms/webpack'); + +// `getConfigs()`'s own default glob ('src/web/assets/*/webpack.config.js') hasn't matched this +// project's layout since the src/ -> src-yii2/ rename (bundle directories now live under +// ../src-yii2/web/assets/*, one level up from this package's own root) — pass an explicit, +// absolute pattern rather than relying on getConfigs()'s `cwd` inference. +module.exports = getConfigs( + path.join(__dirname, '../src-yii2/web/assets/*/webpack.config.js') +); diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index df445ef3fc..0000000000 --- a/package-lock.json +++ /dev/null @@ -1,18713 +0,0 @@ -{ - "name": "@craftcms/commerce", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@craftcms/commerce", - "devDependencies": { - "@craftcms/vue": "^1.0.0", - "@craftcms/webpack": "^1.1.0", - "axios": "^0.28.0", - "chart.js": "^2.9.4", - "chartjs-adapter-moment": "^0.1.2", - "craftcms-sass": "^3.5.6", - "deepmerge": "^4.2.2", - "husky": "^7.0.4", - "lint-staged": "^12.4.0", - "lodash.debounce": "^4.0.8", - "lodash.find": "^4.6.0", - "lodash.isequal": "^4.5.0", - "lodash.isobjectlike": "^4.0.0", - "moment": "^2.29.4", - "prettier": "^2.7.1", - "prismjs": "^1.27.0", - "vue": "^2.6.14", - "vue-prism-editor": "^0.6.1", - "vue-select": "^3.20.0", - "vuelidate": "^0.7.7", - "vuex": "^3.6.2" - } - }, - "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/@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.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", - "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/eslint-parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", - "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", - "dev": true, - "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.11.0", - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/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/@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.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.0", - "@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-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", - "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.19.1", - "@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-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.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" - }, - "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.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "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.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.0" - }, - "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.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "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.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.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/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "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.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", - "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-decorators": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz", - "integrity": "sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.2", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-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.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - }, - "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-decorators": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", - "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "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.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "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-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "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-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-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "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.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.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.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@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.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "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.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" - }, - "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.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", - "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", - "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-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-typescript": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz", - "integrity": "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.2", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" - }, - "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.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@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.20.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.20.2", - "@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.20.0", - "@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.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@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.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@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.20.1", - "@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.20.2", - "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-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/preset-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-typescript": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.10" - }, - "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.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@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.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@craftcms/browserslist-config": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@craftcms/browserslist-config/-/browserslist-config-1.0.0.tgz", - "integrity": "sha512-Yz/lREsfygFaU6VEjz+GBYFAUxrTXP3+PEfA0M0WVg/2hXqXitK83Qdk/OMgW/ByTlyvQlo6TsaTWgCm7ztU8Q==", - "dev": true - }, - "node_modules/@craftcms/vue": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@craftcms/vue/-/vue-1.0.1.tgz", - "integrity": "sha512-uA+sjFJAM4WbyoNg9KVniWu3D0L1VKm4Xs+rNJggIQ/w79onfEaZy0wBrbbHIr1NZv79k4aoTTivZcMWd75q+g==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21", - "sortablejs": "^1.15.0", - "vuetable-2": "^1.7.5" - } - }, - "node_modules/@craftcms/webpack": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@craftcms/webpack/-/webpack-1.1.0.tgz", - "integrity": "sha512-zKtCsOgHCdxQVjEpx+2K9RC9ZKYrnYt7bVKjuKJxX0kwb3Xi2XzHWLQHLEqxMzDtqSjCWt25nR8VK4ObYTCFPg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.14.0", - "@babel/eslint-parser": "^7.17.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/preset-env": "^7.16.4", - "@babel/preset-typescript": "^7.16.0", - "@craftcms/browserslist-config": "^1.0.0", - "@vue/babel-preset-app": "^4.4.1", - "autoprefixer": "^10.3.1", - "babel-loader": "^8.2.2", - "clean-webpack-plugin": "^4.0.0", - "copy-webpack-plugin": "^9.1.0", - "core-js": "^3.6.5", - "css-loader": "^6.5.1", - "css-minimizer-webpack-plugin": "^4.0.0", - "dotenv": "^10.0.0", - "dotenv-webpack": "^7.0.3", - "eslint": "^8.2.0", - "eslint-plugin-vue": "^8.0.3", - "expose-loader": "^3.1.0", - "glob": "^7.2.0", - "json-minimizer-webpack-plugin": "^3.1.1", - "mini-css-extract-plugin": "^2.4.4", - "pkg-dir": "^4.2.0", - "postcss": "^8.2.8", - "postcss-loader": "^6.2.0", - "sass": "^1.26.8", - "sass-loader": "^12.3.0", - "style-loader": "^3.3.1", - "ts-loader": "^9.2.6", - "vue-loader": "^15.9.2", - "vue-template-compiler": "^2.6.14", - "webpack": "^5.64.1", - "webpack-cli": "^4.9.1", - "webpack-dev-server": "^4.4.0", - "webpack-manifest-plugin": "^4.0.2", - "webpack-merge": "^5.8.0", - "webpack-merge-and-include-globally": "^2.1.25", - "yargs": "^17.2.1" - } - }, - "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/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", - "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.0.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types/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" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/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/@jest/types/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/@jest/types/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/@jest/types/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/@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/@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.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "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.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "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/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, - "dependencies": { - "eslint-scope": "5.1.1" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "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/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/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/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "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.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "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/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "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": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "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/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/@types/yargs": { - "version": "17.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.14.tgz", - "integrity": "sha512-9Pj7abXoW1RSTcZaL2Hk6G2XyLMlp5ECdVC/Zf2p/KBjC3srijLGgRAXOBjtFrJoIrvxdTKyKDA14bEcbxBaWw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", - "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", - "dev": true - }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", - "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", - "dev": true - }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", - "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.2", - "camelcase": "^6.0.0", - "html-tags": "^3.1.0", - "svg-tags": "^1.0.0" - } - }, - "node_modules/@vue/babel-plugin-transform-vue-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", - "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vue/babel-preset-app": { - "version": "4.5.19", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz", - "integrity": "sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.0", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.0", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.2.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.0" - }, - "peerDependencies": { - "@babel/core": "*", - "core-js": "^3", - "vue": "^2 || ^3.0.0-0" - }, - "peerDependenciesMeta": { - "core-js": { - "optional": true - }, - "vue": { - "optional": true - } - } - }, - "node_modules/@vue/babel-preset-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", - "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", - "dev": true, - "dependencies": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", - "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", - "@vue/babel-sugar-functional-vue": "^1.4.0", - "@vue/babel-sugar-inject-h": "^1.4.0", - "@vue/babel-sugar-v-model": "^1.4.0", - "@vue/babel-sugar-v-on": "^1.4.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0", - "vue": "*" - }, - "peerDependenciesMeta": { - "vue": { - "optional": true - } - } - }, - "node_modules/@vue/babel-sugar-composition-api-inject-h": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", - "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-composition-api-render-instance": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", - "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-functional-vue": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", - "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-inject-h": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", - "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-model": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", - "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vue/babel-sugar-v-on": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", - "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "camelcase": "^5.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.18.4", - "postcss": "^8.4.14", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/component-compiler-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", - "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", - "dev": true, - "dependencies": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "optionalDependencies": { - "prettier": "^1.18.2 || ^2.0.0" - } - }, - "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/@vue/component-compiler-utils/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.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.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=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" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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, - "peerDependencies": { - "ajv": "^6.9.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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "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/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "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.30001426", - "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.28.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.28.0.tgz", - "integrity": "sha512-Tu7NYoGY4Yoc7I+Npf9HhUMtEEpV7ZiLH9yndTCoNhcpBH0kwcvFbzYN9/u5QKI5A6uefjsNNWaz5olJVYS62Q==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", - "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-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.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "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/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/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "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.13.0", - "raw-body": "2.5.2", - "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/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "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/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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.30001655", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", - "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "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/chart.js": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", - "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==", - "dev": true, - "dependencies": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" - } - }, - "node_modules/chartjs-adapter-moment": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/chartjs-adapter-moment/-/chartjs-adapter-moment-0.1.2.tgz", - "integrity": "sha512-SiTLtTdjiNVbNoG4Mt4vXyp3bx2uyd8reQt+rkoYNyOeemhSMuNYZGuI3whgSI07WeL4NNVOPtv7EyPMlwjpEQ==", - "dev": true, - "peerDependencies": { - "chart.js": ">=2.8.0", - "moment": "^2.10.2" - } - }, - "node_modules/chartjs-color": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz", - "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==", - "dev": true, - "dependencies": { - "chartjs-color-string": "^0.6.0", - "color-convert": "^1.9.3" - } - }, - "node_modules/chartjs-color-string": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", - "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", - "dev": true, - "dependencies": { - "color-name": "^1.0.0" - } - }, - "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/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/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", - "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/clean-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", - "dev": true, - "dependencies": { - "del": "^4.1.1" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": ">=4.0.0 <6.0.0" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/cliui/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/cliui/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/cliui/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/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/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-convert/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/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/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/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "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/component-props": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/component-props/-/component-props-1.1.1.tgz", - "integrity": "sha512-69pIRJs9fCCHRqCz3390YF2LV1Lu6iEMZ5zuVqqUn+G20V9BNXlMs0cWawWeW9g4Ynmg29JmkG6R7/lUJoGd1Q==", - "dev": true - }, - "node_modules/component-xor": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/component-xor/-/component-xor-0.0.4.tgz", - "integrity": "sha512-ZIt6sla8gfo+AFVRZoZOertcnD5LJaY2T9CKE2j13NJxQt/mUafD69Bl7/Y4AnpI2LGjiXH7cOfJDx/n2G9edA==", - "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/compression/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/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "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/consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, - "dependencies": { - "bluebird": "^3.1.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "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-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "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/copy-webpack-plugin": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", - "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-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/core-js": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", - "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "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/craftcms-sass": { - "version": "3.5.7", - "resolved": "https://registry.npmjs.org/craftcms-sass/-/craftcms-sass-3.5.7.tgz", - "integrity": "sha512-QIHiNRVNmmR0A4Kcz8GKHaRWAf9KXu6Ev25DzR8Fi2Yg6reLqql3mhcghVj/XoaPupoWx3DeWnzIGtxH82xTWA==", - "dev": true - }, - "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/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": "6.7.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz", - "integrity": "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.18", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-loader/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/css-loader/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/css-loader/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/css-minimizer-webpack-plugin": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", - "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", - "dev": true, - "dependencies": { - "cssnano": "^5.1.8", - "jest-worker": "^29.1.2", - "postcss": "^8.4.17", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@parcel/css": { - "optional": true - }, - "@swc/css": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "lightningcss": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/css-minimizer-webpack-plugin/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/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-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.14", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", - "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", - "dev": true, - "dependencies": { - "cssnano-preset-default": "^5.2.13", - "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.13", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", - "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.3", - "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.7", - "postcss-merge-rules": "^5.1.3", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "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.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", - "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/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "dev": true - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "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/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "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/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/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "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/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dom-iterator/-/dom-iterator-1.0.0.tgz", - "integrity": "sha512-7dsMOQI07EMU98gQM8NSB3GsAiIeBYIPKpnxR3c9xOvdvBjChAcOM0iJ222I3p5xyiZO9e5oggkNaCusuTdYig==", - "dev": true, - "dependencies": { - "component-props": "1.1.1", - "component-xor": "0.0.4" - } - }, - "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/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": "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/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/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-defaults": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", - "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", - "dev": true, - "dependencies": { - "dotenv": "^8.2.0" - } - }, - "node_modules/dotenv-defaults/node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/dotenv-webpack": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.1.1.tgz", - "integrity": "sha512-xw/19VqHDkXALtBOJAnnrSU/AZDIQRXczAmJyp0lZv6SH2aBLzUTl96W1MVryJZ7okZ+djZS4Gj4KlZ0xP7deA==", - "dev": true, - "dependencies": { - "dotenv-defaults": "^2.0.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "webpack": "^4 || ^5" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", - "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "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, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "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-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true - }, - "node_modules/es6-promisify": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", - "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "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": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-vue": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", - "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", - "dev": true, - "dependencies": { - "eslint-utils": "^3.0.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.0.1", - "postcss-selector-parser": "^6.0.9", - "semver": "^7.3.5", - "vue-eslint-parser": "^8.0.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-vue/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/eslint-plugin-vue/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/eslint-plugin-vue/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/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/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/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" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/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/eslint/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/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/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/eslint/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/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.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.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "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": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "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/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "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" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/expose-loader": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-3.1.0.tgz", - "integrity": "sha512-2RExSo0yJiqP+xiUue13jQa2IHE8kLDzTI7b6kn+vUlBVvlzNSiLDzo4e5Pp5J039usvTUnxZ8sUOhv0Kg15NA==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "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/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "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-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/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "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.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "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/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "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/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": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "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": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "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": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "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, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "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": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "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": "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/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "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-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/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/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/hpack.js/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/hpack.js/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/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-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "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-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/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/husky": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", - "dev": true, - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "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/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "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/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "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-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/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd/node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-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.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "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-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", - "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/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" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/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/jest-util/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/jest-util/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/jest-util/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/jest-worker": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", - "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.3.1", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/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/jest-worker/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/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "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==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "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-minimizer-webpack-plugin": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/json-minimizer-webpack-plugin/-/json-minimizer-webpack-plugin-3.3.0.tgz", - "integrity": "sha512-6h3M/6C+2Cf1sZBiYkxnqjNplgKw8nNxL1/ywzENrjIGK/IBELtns6OfloywF10ufaMPJVFKAtRvdTAfT4skJQ==", - "dev": true, - "dependencies": { - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/json-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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/json-minimizer-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/json-minimizer-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json-minimizer-webpack-plugin/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/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/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "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/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/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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/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/lint-staged": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz", - "integrity": "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==", - "dev": true, - "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.16", - "commander": "^9.3.0", - "debug": "^4.3.4", - "execa": "^5.1.1", - "lilconfig": "2.0.5", - "listr2": "^4.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.5.0", - "string-argv": "^0.3.1", - "supports-color": "^9.2.2", - "yaml": "^1.10.2" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lint-staged/node_modules/supports-color": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.3.tgz", - "integrity": "sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/listr2": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", - "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", - "dev": true, - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.5", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } - } - }, - "node_modules/listr2/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" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/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/listr2/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/listr2/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/listr2/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/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/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "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/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==", - "dev": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "dev": true - }, - "node_modules/lodash.isobjectlike": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isobjectlike/-/lodash.isobjectlike-4.0.0.tgz", - "integrity": "sha512-bbRt0Dief0yqjkTgpvzisSxnsmY3ZgVJvokHL30UE+ytsvnpNfiNaCJL4XBEWek8koQmrwZidBHb7coXC5vXlA==", - "dev": true - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "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.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "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/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/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" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/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/log-update/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/log-update/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/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/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/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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.12", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz", - "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", - "dev": true, - "dependencies": { - "fs-monkey": "^1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1" - } - }, - "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/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/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": "2.7.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.0.tgz", - "integrity": "sha512-auqtVo8KhTScMsba7MbijqZTfibbXiBNlPAQbsVt7enQfcDYLdgG57eGxMqwVU3mfeWANY4F1wUg+rMF+ycZgw==", - "dev": true, - "dependencies": { - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/mini-css-extract-plugin/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/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/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.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "dev": true, - "engines": { - "node": "*" - } - }, - "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/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "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/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-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "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": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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.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/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": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/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-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/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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "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.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", - "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/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "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/pidtree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", - "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/pkg-dir/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/pkg-dir/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/pkg-dir/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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/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/postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", - "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.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "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-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-loader/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/postcss-loader/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/postcss-loader/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/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", - "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "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.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "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.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "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.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", - "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "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.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "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/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", - "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/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/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "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.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "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/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.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "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/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/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/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.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", - "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.1.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/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "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": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "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/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "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/rev-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rev-hash/-/rev-hash-3.0.0.tgz", - "integrity": "sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "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/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/sass": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", - "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } - } - }, - "node_modules/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": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "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": "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/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "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/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "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/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "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": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "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/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "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": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "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": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "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-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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/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/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/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/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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/sortablejs": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", - "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==", - "dev": true - }, - "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.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/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/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": "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/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true, - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/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/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "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/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/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "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/svgo/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/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.31.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", - "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "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.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "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/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/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "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-webpack-plugin/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/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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "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/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/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/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/ts-loader": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.1.tgz", - "integrity": "sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-loader/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" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ts-loader/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/ts-loader/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/ts-loader/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/ts-loader/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/ts-loader/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/ts-loader/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/ts-loader/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/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unescape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", - "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "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/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "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/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "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": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vue": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", - "dev": true, - "dependencies": { - "@vue/compiler-sfc": "2.7.14", - "csstype": "^3.1.0" - } - }, - "node_modules/vue-eslint-parser": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", - "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", - "dev": true, - "dependencies": { - "debug": "^4.3.2", - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.0.0", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/vue-eslint-parser/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/vue-eslint-parser/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/vue-eslint-parser/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/vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "node_modules/vue-loader": { - "version": "15.10.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz", - "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==", - "dev": true, - "dependencies": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "peerDependencies": { - "css-loader": "*", - "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "cache-loader": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/vue-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-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/vue-prism-editor": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/vue-prism-editor/-/vue-prism-editor-0.6.1.tgz", - "integrity": "sha512-UyFLZ242eAplU0C1Tx/ZHSKFTPODQDMBuW9qqgMJyZqHFL2iuIbfT8EWmKtoNUn8w9VWS9IIicPs2odz2eni4Q==", - "dev": true, - "dependencies": { - "dom-iterator": "^1.0.0", - "escape-html": "^1.0.3", - "unescape": "^1.0.1" - } - }, - "node_modules/vue-select": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-3.20.0.tgz", - "integrity": "sha512-Qau4BzpgAC+/9jM5oTlOrfA81ONdtTFH6PqeSDKvIB56f1F6EbIR8qAotpUxrIiNVppyPFjvVDkyriMfHjWBQA==", - "dev": true, - "peerDependencies": { - "vue": "2.x" - } - }, - "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/vue-template-compiler": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", - "dev": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "node_modules/vue-template-es2015-compiler": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true - }, - "node_modules/vuelidate": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/vuelidate/-/vuelidate-0.7.7.tgz", - "integrity": "sha512-pT/U2lDI67wkIqI4tum7cMSIfGcAMfB+Phtqh2ttdXURwvHRBJEAQ0tVbUsW9Upg83Q5QH59bnCoXI7A9JDGnA==", - "dev": true, - "engines": { - "node": ">= 4.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/vuetable-2": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/vuetable-2/-/vuetable-2-1.7.5.tgz", - "integrity": "sha512-cKLD7ufbwNZZA1exOU1U7oXC+nrXq88YwDNAPL8dR9Kk1Pj/HMvLhOr4xw/15748c4OfYxBZQvVTJh4Hnu35AA==", - "dev": true, - "dependencies": { - "axios": "^0.15.3" - }, - "engines": { - "node": ">= 4.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/vuetable-2/node_modules/axios": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz", - "integrity": "sha512-w3/VNaraEcDri16lbemQWQGKfaFk9O0IZkzKlLeF5r6WWDv9TkcXkP+MWkRK8FbxwfozY/liI+qtvhV295t3HQ==", - "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410", - "dev": true, - "dependencies": { - "follow-redirects": "1.0.0" - } - }, - "node_modules/vuetable-2/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/vuetable-2/node_modules/follow-redirects": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", - "integrity": "sha512-7s+wBk4z5xTwVJuozRBAyRofWKjD3uG2CUjZfZTrw9f+f+z8ZSxOjAqfIDLtc0Hnz+wGK2Y8qd93nGGjXBYKsQ==", - "dev": true, - "dependencies": { - "debug": "^2.2.0" - } - }, - "node_modules/vuetable-2/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/vuex": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", - "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", - "dev": true, - "peerDependencies": { - "vue": "^2.0.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "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.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "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.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "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-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", - "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.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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/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/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "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-manifest-plugin": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", - "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", - "dev": true, - "dependencies": { - "tapable": "^2.0.0", - "webpack-sources": "^2.2.0" - }, - "engines": { - "node": ">=12.22.0" - }, - "peerDependencies": { - "webpack": "^4.44.2 || ^5.47.0" - } - }, - "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "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-merge-and-include-globally": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/webpack-merge-and-include-globally/-/webpack-merge-and-include-globally-2.3.4.tgz", - "integrity": "sha512-s5dd7m3ycVBlC7C6GAx91JQzbjhxC/NJRuT2sCkg8WCcF8CE1x/7xwVXqgmt0Fr/H/0sX5C5HE2RdU6+vCY5yg==", - "dev": true, - "dependencies": { - "es6-promisify": "^6.1.1", - "glob": "^7.1.6", - "rev-hash": "^3.0.0" - }, - "peerDependencies": { - "webpack": ">=1.0.0" - } - }, - "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/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "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/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/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "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" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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/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/wrap-ansi/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/wrap-ansi/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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "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/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "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.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "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.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "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/yargs/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/yargs/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/yargs/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/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "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" - } - }, - "@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.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "dev": true - }, - "@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "@babel/eslint-parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", - "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", - "dev": true, - "requires": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@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" - } - } - } - }, - "@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.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", - "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.19.1", - "@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" - } - }, - "@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.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" - } - }, - "@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.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "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.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dev": true, - "requires": { - "@babel/types": "^7.20.0" - } - }, - "@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.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "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.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.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" - } - }, - "@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "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.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", - "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-decorators": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz", - "integrity": "sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.20.2", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.19.0" - } - }, - "@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.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - } - }, - "@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-decorators": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", - "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@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.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@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-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@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.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.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.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@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.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@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.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" - } - }, - "@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.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", - "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", - "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" - } - }, - "@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-typescript": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz", - "integrity": "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.20.2", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" - } - }, - "@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.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@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.20.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.20.2", - "@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.20.0", - "@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.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@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.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@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.20.1", - "@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.20.2", - "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" - } - }, - "@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/preset-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-typescript": "^7.18.6" - } - }, - "@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.10" - } - }, - "@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.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@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.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@craftcms/browserslist-config": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@craftcms/browserslist-config/-/browserslist-config-1.0.0.tgz", - "integrity": "sha512-Yz/lREsfygFaU6VEjz+GBYFAUxrTXP3+PEfA0M0WVg/2hXqXitK83Qdk/OMgW/ByTlyvQlo6TsaTWgCm7ztU8Q==", - "dev": true - }, - "@craftcms/vue": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@craftcms/vue/-/vue-1.0.1.tgz", - "integrity": "sha512-uA+sjFJAM4WbyoNg9KVniWu3D0L1VKm4Xs+rNJggIQ/w79onfEaZy0wBrbbHIr1NZv79k4aoTTivZcMWd75q+g==", - "dev": true, - "requires": { - "lodash": "^4.17.21", - "sortablejs": "^1.15.0", - "vuetable-2": "^1.7.5" - } - }, - "@craftcms/webpack": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@craftcms/webpack/-/webpack-1.1.0.tgz", - "integrity": "sha512-zKtCsOgHCdxQVjEpx+2K9RC9ZKYrnYt7bVKjuKJxX0kwb3Xi2XzHWLQHLEqxMzDtqSjCWt25nR8VK4ObYTCFPg==", - "dev": true, - "requires": { - "@babel/core": "^7.14.0", - "@babel/eslint-parser": "^7.17.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/preset-env": "^7.16.4", - "@babel/preset-typescript": "^7.16.0", - "@craftcms/browserslist-config": "^1.0.0", - "@vue/babel-preset-app": "^4.4.1", - "autoprefixer": "^10.3.1", - "babel-loader": "^8.2.2", - "clean-webpack-plugin": "^4.0.0", - "copy-webpack-plugin": "^9.1.0", - "core-js": "^3.6.5", - "css-loader": "^6.5.1", - "css-minimizer-webpack-plugin": "^4.0.0", - "dotenv": "^10.0.0", - "dotenv-webpack": "^7.0.3", - "eslint": "^8.2.0", - "eslint-plugin-vue": "^8.0.3", - "expose-loader": "^3.1.0", - "glob": "^7.2.0", - "json-minimizer-webpack-plugin": "^3.1.1", - "mini-css-extract-plugin": "^2.4.4", - "pkg-dir": "^4.2.0", - "postcss": "^8.2.8", - "postcss-loader": "^6.2.0", - "sass": "^1.26.8", - "sass-loader": "^12.3.0", - "style-loader": "^3.3.1", - "ts-loader": "^9.2.6", - "vue-loader": "^15.9.2", - "vue-template-compiler": "^2.6.14", - "webpack": "^5.64.1", - "webpack-cli": "^4.9.1", - "webpack-dev-server": "^4.4.0", - "webpack-manifest-plugin": "^4.0.2", - "webpack-merge": "^5.8.0", - "webpack-merge-and-include-globally": "^2.1.25", - "yargs": "^17.2.1" - } - }, - "@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 - }, - "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.24.1" - } - }, - "@jest/types": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", - "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", - "dev": true, - "requires": { - "@jest/schemas": "^29.0.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.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" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@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" - } - }, - "@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.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - } - } - }, - "@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.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@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 - }, - "@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, - "requires": { - "eslint-scope": "5.1.1" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "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/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/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/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "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.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "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/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@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": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "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/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": "*" - } - }, - "@types/yargs": { - "version": "17.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.14.tgz", - "integrity": "sha512-9Pj7abXoW1RSTcZaL2Hk6G2XyLMlp5ECdVC/Zf2p/KBjC3srijLGgRAXOBjtFrJoIrvxdTKyKDA14bEcbxBaWw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", - "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", - "dev": true - }, - "@vue/babel-helper-vue-transform-on": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", - "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", - "dev": true - }, - "@vue/babel-plugin-jsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", - "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.2", - "camelcase": "^6.0.0", - "html-tags": "^3.1.0", - "svg-tags": "^1.0.0" - } - }, - "@vue/babel-plugin-transform-vue-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", - "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - }, - "dependencies": { - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true - } - } - }, - "@vue/babel-preset-app": { - "version": "4.5.19", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz", - "integrity": "sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==", - "dev": true, - "requires": { - "@babel/core": "^7.11.0", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.0", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.2.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.0" - } - }, - "@vue/babel-preset-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", - "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", - "dev": true, - "requires": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", - "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", - "@vue/babel-sugar-functional-vue": "^1.4.0", - "@vue/babel-sugar-inject-h": "^1.4.0", - "@vue/babel-sugar-v-model": "^1.4.0", - "@vue/babel-sugar-v-on": "^1.4.0" - } - }, - "@vue/babel-sugar-composition-api-inject-h": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", - "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-composition-api-render-instance": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", - "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-functional-vue": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", - "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-inject-h": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", - "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-v-model": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", - "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true - } - } - }, - "@vue/babel-sugar-v-on": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", - "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "camelcase": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } - }, - "@vue/compiler-sfc": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", - "dev": true, - "requires": { - "@babel/parser": "^7.18.4", - "postcss": "^8.4.14", - "source-map": "^0.6.1" - } - }, - "@vue/component-compiler-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", - "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", - "dev": true, - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2 || ^2.0.0", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.12.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.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true - }, - "acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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, - "requires": {} - }, - "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" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "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 - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "axios": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.28.0.tgz", - "integrity": "sha512-Tu7NYoGY4Yoc7I+Npf9HhUMtEEpV7ZiLH9yndTCoNhcpBH0kwcvFbzYN9/u5QKI5A6uefjsNNWaz5olJVYS62Q==", - "dev": true, - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", - "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" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "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 - }, - "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 - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "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.13.0", - "raw-body": "2.5.2", - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "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" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true - }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "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.30001655", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", - "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", - "dev": true - }, - "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" - } - }, - "chart.js": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", - "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==", - "dev": true, - "requires": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" - } - }, - "chartjs-adapter-moment": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/chartjs-adapter-moment/-/chartjs-adapter-moment-0.1.2.tgz", - "integrity": "sha512-SiTLtTdjiNVbNoG4Mt4vXyp3bx2uyd8reQt+rkoYNyOeemhSMuNYZGuI3whgSI07WeL4NNVOPtv7EyPMlwjpEQ==", - "dev": true, - "requires": {} - }, - "chartjs-color": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz", - "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==", - "dev": true, - "requires": { - "chartjs-color-string": "^0.6.0", - "color-convert": "^1.9.3" - } - }, - "chartjs-color-string": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", - "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", - "dev": true, - "requires": { - "color-name": "^1.0.0" - } - }, - "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": { - "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" - } - } - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "ci-info": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", - "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "clean-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", - "dev": true, - "requires": { - "del": "^4.1.1" - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "requires": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.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" - }, - "dependencies": { - "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 - }, - "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 - }, - "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" - } - } - } - }, - "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" - } - }, - "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" - }, - "dependencies": { - "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 - } - } - }, - "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 - }, - "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 - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "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 - }, - "component-props": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/component-props/-/component-props-1.1.1.tgz", - "integrity": "sha512-69pIRJs9fCCHRqCz3390YF2LV1Lu6iEMZ5zuVqqUn+G20V9BNXlMs0cWawWeW9g4Ynmg29JmkG6R7/lUJoGd1Q==", - "dev": true - }, - "component-xor": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/component-xor/-/component-xor-0.0.4.tgz", - "integrity": "sha512-ZIt6sla8gfo+AFVRZoZOertcnD5LJaY2T9CKE2j13NJxQt/mUafD69Bl7/Y4AnpI2LGjiXH7cOfJDx/n2G9edA==", - "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "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 - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "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 - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "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" - } - }, - "content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "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 - }, - "copy-webpack-plugin": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", - "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", - "dev": true, - "requires": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.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" - } - } - } - }, - "core-js": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", - "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==", - "dev": true - }, - "core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", - "dev": true, - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "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" - } - }, - "craftcms-sass": { - "version": "3.5.7", - "resolved": "https://registry.npmjs.org/craftcms-sass/-/craftcms-sass-3.5.7.tgz", - "integrity": "sha512-QIHiNRVNmmR0A4Kcz8GKHaRWAf9KXu6Ev25DzR8Fi2Yg6reLqql3mhcghVj/XoaPupoWx3DeWnzIGtxH82xTWA==", - "dev": true - }, - "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" - } - }, - "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": "6.7.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz", - "integrity": "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.18", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "css-minimizer-webpack-plugin": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", - "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", - "dev": true, - "requires": { - "cssnano": "^5.1.8", - "jest-worker": "^29.1.2", - "postcss": "^8.4.17", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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" - } - } - } - }, - "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" - } - }, - "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.14", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", - "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", - "dev": true, - "requires": { - "cssnano-preset-default": "^5.2.13", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", - "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.3", - "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.7", - "postcss-merge-rules": "^5.1.3", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "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.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", - "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" - } - }, - "csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "dev": true - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "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" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "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-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "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" - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "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 - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "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" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dom-iterator/-/dom-iterator-1.0.0.tgz", - "integrity": "sha512-7dsMOQI07EMU98gQM8NSB3GsAiIeBYIPKpnxR3c9xOvdvBjChAcOM0iJ222I3p5xyiZO9e5oggkNaCusuTdYig==", - "dev": true, - "requires": { - "component-props": "1.1.1", - "component-xor": "0.0.4" - } - }, - "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" - } - }, - "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": "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" - } - }, - "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" - } - }, - "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "dev": true - }, - "dotenv-defaults": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", - "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", - "dev": true, - "requires": { - "dotenv": "^8.2.0" - }, - "dependencies": { - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "dev": true - } - } - }, - "dotenv-webpack": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.1.1.tgz", - "integrity": "sha512-xw/19VqHDkXALtBOJAnnrSU/AZDIQRXczAmJyp0lZv6SH2aBLzUTl96W1MVryJZ7okZ+djZS4Gj4KlZ0xP7deA==", - "dev": true, - "requires": { - "dotenv-defaults": "^2.0.2" - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", - "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "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-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true - }, - "es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true - }, - "es6-promisify": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", - "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==", - "dev": true - }, - "escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.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" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "eslint-plugin-vue": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", - "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", - "dev": true, - "requires": { - "eslint-utils": "^3.0.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.0.1", - "postcss-selector-parser": "^6.0.9", - "semver": "^7.3.5", - "vue-eslint-parser": "^8.0.1" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - } - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "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.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "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": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "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 - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "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" - } - }, - "expose-loader": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-3.1.0.tgz", - "integrity": "sha512-2RExSo0yJiqP+xiUue13jQa2IHE8kLDzTI7b6kn+vUlBVvlzNSiLDzo4e5Pp5J039usvTUnxZ8sUOhv0Kg15NA==", - "dev": true, - "requires": {} - }, - "express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "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.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "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" - } - } - } - }, - "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 - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "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.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "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" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "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 - } - } - }, - "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": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "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": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "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": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "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 - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "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.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "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-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "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": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "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": "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 - }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true - }, - "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-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 - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "requires": { - "function-bind": "^1.1.2" - } - }, - "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 - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "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" - } - }, - "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 - }, - "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" - } - } - } - }, - "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-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "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" - } - }, - "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" - } - }, - "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 - }, - "husky": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", - "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": {} - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "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" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "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-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-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "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 - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - }, - "dependencies": { - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - } - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-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.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "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": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "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-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", - "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", - "dev": true, - "requires": { - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "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" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-worker": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", - "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.3.1", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "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" - } - } - } - }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-minimizer-webpack-plugin": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/json-minimizer-webpack-plugin/-/json-minimizer-webpack-plugin-3.3.0.tgz", - "integrity": "sha512-6h3M/6C+2Cf1sZBiYkxnqjNplgKw8nNxL1/ywzENrjIGK/IBELtns6OfloywF10ufaMPJVFKAtRvdTAfT4skJQ==", - "dev": true, - "requires": { - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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" - } - } - } - }, - "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 - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "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 - }, - "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 - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "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 - }, - "lint-staged": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz", - "integrity": "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==", - "dev": true, - "requires": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.16", - "commander": "^9.3.0", - "debug": "^4.3.4", - "execa": "^5.1.1", - "lilconfig": "2.0.5", - "listr2": "^4.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.5.0", - "string-argv": "^0.3.1", - "supports-color": "^9.2.2", - "yaml": "^1.10.2" - }, - "dependencies": { - "lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", - "dev": true - }, - "supports-color": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.3.tgz", - "integrity": "sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA==", - "dev": true - } - } - }, - "listr2": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", - "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", - "dev": true, - "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.5", - "through": "^2.3.8", - "wrap-ansi": "^7.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" - } - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.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" - } - } - } - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "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" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.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.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==", - "dev": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "dev": true - }, - "lodash.isobjectlike": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isobjectlike/-/lodash.isobjectlike-4.0.0.tgz", - "integrity": "sha512-bbRt0Dief0yqjkTgpvzisSxnsmY3ZgVJvokHL30UE+ytsvnpNfiNaCJL4XBEWek8koQmrwZidBHb7coXC5vXlA==", - "dev": true - }, - "lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "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.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "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 - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.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" - } - }, - "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 - }, - "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 - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.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" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "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" - } - }, - "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.12", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz", - "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", - "dev": true, - "requires": { - "fs-monkey": "^1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "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 - }, - "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" - } - }, - "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": "2.7.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.0.tgz", - "integrity": "sha512-auqtVo8KhTScMsba7MbijqZTfibbXiBNlPAQbsVt7enQfcDYLdgG57eGxMqwVU3mfeWANY4F1wUg+rMF+ycZgw==", - "dev": true, - "requires": { - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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" - } - } - } - }, - "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 - }, - "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.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "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 - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "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 - }, - "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-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "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": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", - "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.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" - } - }, - "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": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "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" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "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 - }, - "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-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 - }, - "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "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.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", - "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 - }, - "picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pidtree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", - "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", - "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.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "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-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" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - } - }, - "postcss-merge-rules": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", - "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "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.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "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.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "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.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", - "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "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.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "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 - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", - "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", - "dev": true - }, - "prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "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 - }, - "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 - } - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "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.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, - "requires": { - "side-channel": "^1.0.6" - } - }, - "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 - }, - "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" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "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 - } - } - }, - "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" - } - }, - "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" - } - }, - "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.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", - "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.1.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 - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "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": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "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 - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "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 - }, - "rev-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rev-hash/-/rev-hash-3.0.0.tgz", - "integrity": "sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "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" - } - }, - "rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "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 - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", - "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", - "dev": true, - "requires": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - } - }, - "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": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "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": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "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 - } - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "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 - } - } - }, - "serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "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": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "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" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "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": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "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 - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "requires": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - } - }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "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 - }, - "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - } - } - }, - "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" - } - }, - "sortablejs": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", - "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==", - "dev": true - }, - "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.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" - } - }, - "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" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "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 - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "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 - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true, - "requires": {} - }, - "stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - } - }, - "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" - } - }, - "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 - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "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" - }, - "dependencies": { - "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 - } - } - }, - "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.31.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", - "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "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 - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "dependencies": { - "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 - }, - "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" - } - }, - "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "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" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "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 - }, - "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" - } - }, - "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 - }, - "ts-loader": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.1.tgz", - "integrity": "sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "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" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "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" - } - }, - "typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", - "dev": true, - "peer": true - }, - "unescape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", - "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1" - } - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "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 - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", - "dev": true, - "requires": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - } - }, - "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" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "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": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "vue": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", - "dev": true, - "requires": { - "@vue/compiler-sfc": "2.7.14", - "csstype": "^3.1.0" - } - }, - "vue-eslint-parser": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", - "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", - "dev": true, - "requires": { - "debug": "^4.3.2", - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.0.0", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.5" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "vue-loader": { - "version": "15.10.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz", - "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.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" - } - } - } - }, - "vue-prism-editor": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/vue-prism-editor/-/vue-prism-editor-0.6.1.tgz", - "integrity": "sha512-UyFLZ242eAplU0C1Tx/ZHSKFTPODQDMBuW9qqgMJyZqHFL2iuIbfT8EWmKtoNUn8w9VWS9IIicPs2odz2eni4Q==", - "dev": true, - "requires": { - "dom-iterator": "^1.0.0", - "escape-html": "^1.0.3", - "unescape": "^1.0.1" - } - }, - "vue-select": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-3.20.0.tgz", - "integrity": "sha512-Qau4BzpgAC+/9jM5oTlOrfA81ONdtTFH6PqeSDKvIB56f1F6EbIR8qAotpUxrIiNVppyPFjvVDkyriMfHjWBQA==", - "dev": true, - "requires": {} - }, - "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" - } - } - } - }, - "vue-template-compiler": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "vue-template-es2015-compiler": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true - }, - "vuelidate": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/vuelidate/-/vuelidate-0.7.7.tgz", - "integrity": "sha512-pT/U2lDI67wkIqI4tum7cMSIfGcAMfB+Phtqh2ttdXURwvHRBJEAQ0tVbUsW9Upg83Q5QH59bnCoXI7A9JDGnA==", - "dev": true - }, - "vuetable-2": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/vuetable-2/-/vuetable-2-1.7.5.tgz", - "integrity": "sha512-cKLD7ufbwNZZA1exOU1U7oXC+nrXq88YwDNAPL8dR9Kk1Pj/HMvLhOr4xw/15748c4OfYxBZQvVTJh4Hnu35AA==", - "dev": true, - "requires": { - "axios": "^0.15.3" - }, - "dependencies": { - "axios": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz", - "integrity": "sha512-w3/VNaraEcDri16lbemQWQGKfaFk9O0IZkzKlLeF5r6WWDv9TkcXkP+MWkRK8FbxwfozY/liI+qtvhV295t3HQ==", - "dev": true, - "requires": { - "follow-redirects": "1.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" - } - }, - "follow-redirects": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", - "integrity": "sha512-7s+wBk4z5xTwVJuozRBAyRofWKjD3uG2CUjZfZTrw9f+f+z8ZSxOjAqfIDLtc0Hnz+wGK2Y8qd93nGGjXBYKsQ==", - "dev": true, - "requires": { - "debug": "^2.2.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "vuex": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", - "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", - "dev": true, - "requires": {} - }, - "watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "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.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "dev": true, - "requires": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "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.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "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" - }, - "dependencies": { - "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 - } - } - }, - "webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", - "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.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "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 - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "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-manifest-plugin": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", - "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", - "dev": true, - "requires": { - "tapable": "^2.0.0", - "webpack-sources": "^2.2.0" - }, - "dependencies": { - "webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - } - } - } - }, - "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-merge-and-include-globally": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/webpack-merge-and-include-globally/-/webpack-merge-and-include-globally-2.3.4.tgz", - "integrity": "sha512-s5dd7m3ycVBlC7C6GAx91JQzbjhxC/NJRuT2sCkg8WCcF8CE1x/7xwVXqgmt0Fr/H/0sX5C5HE2RdU6+vCY5yg==", - "dev": true, - "requires": { - "es6-promisify": "^6.1.1", - "glob": "^7.1.6", - "rev-hash": "^3.0.0" - } - }, - "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 - }, - "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 - }, - "word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "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" - } - }, - "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 - }, - "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 - }, - "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" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, - "requires": {} - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "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.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "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.1.1" - }, - "dependencies": { - "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 - }, - "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 - }, - "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" - } - } - } - }, - "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 - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } -} diff --git a/package.json b/package.json index aecabc106c..96e5843fc7 100644 --- a/package.json +++ b/package.json @@ -1,40 +1,27 @@ { "name": "@craftcms/commerce", "private": true, - "main": "webpack.config.js", - "browserslist": [ - "extends @craftcms/browserslist-config" - ], + "packageManager": "pnpm@11.25.0", + "description": "Commerce's Vue 3/Vite bundle for the new CP Form system (Form Node/Control components Commerce contributes via window.Cp.$components — see resources/js/cp.ts). The legacy Vue 2/webpack `commerceui` order-edit bundle lives in ./legacy, a separate pnpm workspace package — the two can't share a `vue` dependency.", "scripts": { - "prebuild": "npm run fix-prettier", - "build": "webpack --node-env=production --progress", - "dev": "webpack --node-env=dev --mode=development --progress", - "serve": "webpack-dev-server --node-env=development", + "build": "vite build", + "dev": "vite", + "typecheck": "vue-tsc --noEmit", + "build:legacy": "pnpm --filter @craftcms/commerce-legacy build", + "dev:legacy": "pnpm --filter @craftcms/commerce-legacy dev", "check-prettier": "prettier --check .", "fix-prettier": "prettier --write .", "prepare": "husky install" }, "devDependencies": { - "@craftcms/vue": "^1.0.0", - "@craftcms/webpack": "^1.1.0", - "axios": "^0.28.0", - "chart.js": "^2.9.4", - "chartjs-adapter-moment": "^0.1.2", - "craftcms-sass": "^3.5.6", - "deepmerge": "^4.2.2", - "lodash.debounce": "^4.0.8", - "lodash.find": "^4.6.0", - "lodash.isequal": "^4.5.0", - "lodash.isobjectlike": "^4.0.0", - "moment": "^2.29.4", - "prismjs": "^1.27.0", - "vue": "^2.6.14", - "vue-prism-editor": "^0.6.1", - "vue-select": "^3.20.0", - "vuelidate": "^0.7.7", - "vuex": "^3.6.2", + "@vitejs/plugin-vue": "^6.0.9", "husky": "^7.0.4", + "laravel-vite-plugin": "^3.2.0", "lint-staged": "^12.4.0", - "prettier": "^2.7.1" + "prettier": "^2.7.1", + "typescript": "^6.0.3", + "vite": "^8.0.0", + "vue": "^3.5.33", + "vue-tsc": "^3.3.11" } } diff --git a/phpstan.neon b/phpstan.neon index 39e7ab9091..ce7b2c4d71 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,7 +1,42 @@ includes: - - vendor/craftcms/phpstan/phpstan.neon + - vendor/larastan/larastan/extension.neon + - vendor/nesbot/carbon/extension.neon parameters: level: 5 + parallel: + # Parallel workers each independently reflect on classes reached through class_alias() + # chains (the legacy src-yii2/ -> src/ stubs); depending on which worker resolves a given + # alias target first, PHPStan sometimes can/can't trace the chain, making `argument.type`/ + # `method.notFound` errors (and their `@phpstan-ignore-next-line` suppressions) on those + # call sites non-deterministic between otherwise-identical runs. Single-process analysis + # is slower but avoids that race entirely. + maximumNumberOfProcesses: 1 paths: - - src \ No newline at end of file + - src + scanDirectories: + - src-yii2 + scanFiles: + - vendor/craftcms/yii2-adapter/legacy/Craft.php + - vendor/craftcms/yii2-adapter/lib/yii2/Yii.php + - vendor/twig/twig/src/Extension/CoreExtension.php + - vendor/craftcms/cms/src/helpers.php + databaseMigrationsPath: + - database/migrations + stubFiles: + - vendor/craftcms/yii2-adapter/stubs/laravel-ruleset-validation.stub + - vendor/craftcms/yii2-adapter/stubs/_generated.stub + - vendor/craftcms/yii2-adapter/stubs/GraphQL/Type/Definition/FieldDefinition.stub + - vendor/craftcms/yii2-adapter/stubs/GraphQL/Type/Definition/ResolveInfo.stub + - vendor/craftcms/yii2-adapter/stubs/samdark/log/PsrTarget.stub + - vendor/craftcms/yii2-adapter/stubs/yii/base/Component.stub + - vendor/craftcms/yii2-adapter/stubs/yii/base/Event.stub + - vendor/craftcms/yii2-adapter/stubs/yii/base/Module.stub + - vendor/craftcms/yii2-adapter/stubs/yii/BaseYii.stub + - vendor/craftcms/yii2-adapter/stubs/yii/db/BaseActiveRecord.stub + - vendor/craftcms/yii2-adapter/stubs/yii/db/Query.stub + - vendor/craftcms/yii2-adapter/stubs/yii/db/Migration.stub + - vendor/craftcms/yii2-adapter/stubs/yii/di/ServiceLocator.stub + - vendor/craftcms/yii2-adapter/stubs/yii/helpers/BaseArrayHelper.stub + - vendor/craftcms/yii2-adapter/stubs/yii/validators/UniqueValidator.stub + - vendor/craftcms/yii2-adapter/stubs/yii/validators/Validator.stub \ No newline at end of file diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000000..8ee86de9bd --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,42 @@ + + + + + ./tests/Feature + + + ./tests/Unit + + + ./tests/Arch + + + + + + + + + + + + + + + + + + + + + ./src + + + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000000..8efac5ec98 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,8481 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +catalogs: + legacy: + vue: + specifier: ^2.6.14 + version: 2.7.16 + vue-template-compiler: + specifier: ^2.6.14 + version: 2.7.16 + +packageExtensionsChecksum: sha256-Qst1asPaWurmbx1tbQF6zqnGi8VeyEQqo1HLF6gZoEM= + +importers: + + .: + devDependencies: + '@vitejs/plugin-vue': + specifier: ^6.0.9 + version: 6.0.9(vite@8.3.0(@types/node@26.6.2)(sass@1.104.1)(terser@5.51.2))(vue@3.5.43(typescript@6.0.3)) + husky: + specifier: ^7.0.4 + version: 7.0.4 + laravel-vite-plugin: + specifier: ^3.2.0 + version: 3.2.0(vite@8.3.0(@types/node@26.6.2)(sass@1.104.1)(terser@5.51.2)) + lint-staged: + specifier: ^12.4.0 + version: 12.5.0 + prettier: + specifier: ^2.7.1 + version: 2.8.8 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + vite: + specifier: ^8.0.0 + version: 8.3.0(@types/node@26.6.2)(sass@1.104.1)(terser@5.51.2) + vue: + specifier: ^3.5.33 + version: 3.5.43(typescript@6.0.3) + vue-tsc: + specifier: ^3.3.11 + version: 3.3.11(typescript@6.0.3) + + legacy: + devDependencies: + '@craftcms/vue': + specifier: ^1.0.0 + version: 1.0.1(supports-color@9.4.0) + '@craftcms/webpack': + specifier: ^1.1.0 + version: 1.1.2(@vue/compiler-sfc@3.5.43)(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(debug@4.4.3(supports-color@9.4.0))(lightningcss@1.33.0)(loader-utils@2.0.4)(lodash@4.18.1)(prettier@2.8.8)(supports-color@9.4.0)(svgo@2.8.4)(typescript@6.0.3)(vue@2.7.16) + axios: + specifier: ^0.28.0 + version: 0.28.1(debug@4.4.3(supports-color@9.4.0)) + chart.js: + specifier: ^2.9.4 + version: 2.9.4 + chartjs-adapter-moment: + specifier: ^0.1.2 + version: 0.1.2(chart.js@2.9.4)(moment@2.31.0) + craftcms-sass: + specifier: ^3.5.6 + version: 3.5.7 + deepmerge: + specifier: ^4.2.2 + version: 4.3.1 + lodash.debounce: + specifier: ^4.0.8 + version: 4.0.8 + lodash.find: + specifier: ^4.6.0 + version: 4.6.0 + lodash.isequal: + specifier: ^4.5.0 + version: 4.5.0 + lodash.isobjectlike: + specifier: ^4.0.0 + version: 4.0.0 + moment: + specifier: ^2.29.4 + version: 2.31.0 + prismjs: + specifier: ^1.27.0 + version: 1.30.0 + vue: + specifier: catalog:legacy + version: 2.7.16 + vue-loader: + specifier: ^15.11.1 + version: 15.11.1(@vue/compiler-sfc@3.5.43)(css-loader@6.11.0(webpack@5.111.1))(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(webpack@5.111.1) + vue-prism-editor: + specifier: ^0.6.1 + version: 0.6.1 + vue-select: + specifier: ^3.20.0 + version: 3.20.4(vue@2.7.16) + vue-template-compiler: + specifier: catalog:legacy + version: 2.7.16 + vuelidate: + specifier: ^0.7.7 + version: 0.7.7 + vuex: + specifier: ^3.6.2 + version: 3.6.2(vue@2.7.16) + +packages: + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.29.9': + resolution: {integrity: sha512-GmrJTAtiRbNip+eKFqeuSvoHMJhKlH36j8U0yE3Gqn45B+SIO7NvsEiHtsmzkBqV1hLSMqYr41dI1aZLTkJ37g==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.29.7': + resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.29.7': + resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.29.7': + resolution: {integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.8': + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.29.7': + resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.29.7': + resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.29.7': + resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.29.7': + resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.29.7': + resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.9': + resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7': + resolution: {integrity: sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7': + resolution: {integrity: sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7': + resolution: {integrity: sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7': + resolution: {integrity: sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7': + resolution: {integrity: sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7': + resolution: {integrity: sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-decorators@7.29.7': + resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.29.7': + resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.29.7': + resolution: {integrity: sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.29.7': + resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.29.7': + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.29.7': + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.29.7': + resolution: {integrity: sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.29.7': + resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.29.7': + resolution: {integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.29.7': + resolution: {integrity: sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.29.7': + resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.29.7': + resolution: {integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.29.7': + resolution: {integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.29.7': + resolution: {integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.29.7': + resolution: {integrity: sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.29.7': + resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.29.7': + resolution: {integrity: sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.29.7': + resolution: {integrity: sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7': + resolution: {integrity: sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.29.7': + resolution: {integrity: sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.29.7': + resolution: {integrity: sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.29.7': + resolution: {integrity: sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.29.7': + resolution: {integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.29.7': + resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.29.7': + resolution: {integrity: sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.29.7': + resolution: {integrity: sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.29.7': + resolution: {integrity: sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.29.7': + resolution: {integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.29.7': + resolution: {integrity: sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.29.7': + resolution: {integrity: sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.29.7': + resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.29.8': + resolution: {integrity: sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.29.7': + resolution: {integrity: sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': + resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.29.7': + resolution: {integrity: sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': + resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.29.7': + resolution: {integrity: sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.29.7': + resolution: {integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.29.7': + resolution: {integrity: sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.29.7': + resolution: {integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.29.7': + resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.29.7': + resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.29.7': + resolution: {integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.29.7': + resolution: {integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.29.7': + resolution: {integrity: sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.29.8': + resolution: {integrity: sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.29.7': + resolution: {integrity: sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.29.7': + resolution: {integrity: sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.29.7': + resolution: {integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.29.7': + resolution: {integrity: sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.29.8': + resolution: {integrity: sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.29.7': + resolution: {integrity: sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.29.7': + resolution: {integrity: sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.29.7': + resolution: {integrity: sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.29.9': + resolution: {integrity: sha512-FFwIwzU+7SCOuxxV4YtJql6T9981ZVTm+FHO5GhVsRqCTdy0WwrEZh3l42ARpXruJUDGOptdduHW6Zr7pNPLNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.29.7': + resolution: {integrity: sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.29.7': + resolution: {integrity: sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.29.7': + resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.29.7': + resolution: {integrity: sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.29.7': + resolution: {integrity: sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-typescript@7.29.7': + resolution: {integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + + '@craftcms/browserslist-config@1.0.0': + resolution: {integrity: sha512-Yz/lREsfygFaU6VEjz+GBYFAUxrTXP3+PEfA0M0WVg/2hXqXitK83Qdk/OMgW/ByTlyvQlo6TsaTWgCm7ztU8Q==} + + '@craftcms/vue@1.0.1': + resolution: {integrity: sha512-uA+sjFJAM4WbyoNg9KVniWu3D0L1VKm4Xs+rNJggIQ/w79onfEaZy0wBrbbHIr1NZv79k4aoTTivZcMWd75q+g==} + + '@craftcms/webpack@1.1.2': + resolution: {integrity: sha512-h5ZplLln9jeYwtK1nZYUhFE21Dg/HslSaKF83NGTsK/CPGhVW9f1EQq4VM9vh66hjwtU7leOiwLS8jLWzNKHKQ==} + + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@oxc-project/types@0.150.0': + resolution: {integrity: sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw==} + + '@parcel/watcher-android-arm64@2.6.0': + resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.6.0': + resolution: {integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.6.0': + resolution: {integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.6.0': + resolution: {integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.6.0': + resolution: {integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm-musl@2.6.0': + resolution: {integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-arm64-glibc@2.6.0': + resolution: {integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm64-musl@2.6.0': + resolution: {integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-x64-glibc@2.6.0': + resolution: {integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-x64-musl@2.6.0': + resolution: {integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@parcel/watcher-win32-arm64@2.6.0': + resolution: {integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-x64@2.6.0': + resolution: {integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.6.0': + resolution: {integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==} + engines: {node: '>= 10.0.0'} + + '@rolldown/binding-android-arm-eabi@1.2.9': + resolution: {integrity: sha512-tNISae1QEf/vkb3xkRcjV5SEdzPE97We5IVaa2Z8jSszQPZ8U60B/YCYpw4QI7VidYsBtKavczXf+DyDs9WGxw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@rolldown/binding-android-arm64@1.2.9': + resolution: {integrity: sha512-YC8YsI30o606GTZi0VyzYlsDKFP8W61i/QzayHDkLbNEz/IShqAmTa+hsJRj13xTHA0H+6fk4b2UmGn+Q/cMlg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.2.9': + resolution: {integrity: sha512-IwhlH3qK5urrY8hZiEgGkHKEFN901p/p2bjxCxJlr4GyNnF7wYpUvK+Y43uaRYuC4hpfjzbR3SJC3arX1jGvmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.2.9': + resolution: {integrity: sha512-XxpJfVzFh+jilRxIXUqcfYAYcunIc/XEzIizsOL1fcJee5Sf7H3mH8WlLmfHfluz5amqR88QQo9izKtmMlavAw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.2.9': + resolution: {integrity: sha512-kSfvhmgeWyfkbT3p/1s5vSgboogoah2zkm9fX2zjg2hHxSV7T4KhMWRUUaRk4OXNqoD3QAUeRqLcs1aZOK4U1g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.2.9': + resolution: {integrity: sha512-1RVzG17pxqbTfYLC352JlLt6kKLG+6Hr30n8DlIJqsnV5luUDd2Qdx9Ayw1Cabfyb1K9k0jXEZ7evxkRoT+uiw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.2.9': + resolution: {integrity: sha512-BXqPvZ2drqVD+/Z8UpKwcs4Mp7grM+eGFku4CAEKrEtcbAsUpzREphK1sogCRZGreVPiMkiiBtw0n3TPteuqvw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.2.9': + resolution: {integrity: sha512-11vWvo8YDwLzukt27J3aYDWU+gg2P7J+ZOmiJ0hkF5BXZDW7pVya7r40MXDy6ya0i9KamoENSVKIugvJNgFXIA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.2.9': + resolution: {integrity: sha512-a1tijMkdwsIARtc0F39ApURROkf3NwqinI6TOiSSWCTR7dT96dffNvMUtDHnq64wKNTIZOIlzKrFvvFUznJiyw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.2.9': + resolution: {integrity: sha512-x6SQNdAvv4c3hWqTMaWuawzMX9myaCs/yEmlGsxJzkdClnHW7FbrjQuSiRDhuSYzEYoEMhsaJy9qHG/XNemJPQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.2.9': + resolution: {integrity: sha512-9s0AZ8BFK5/n7B/TBoa2yJE3gI3KURrbXcPBlsAsvjU4VeJKgE90y1YtNxyEUIcHPQkg6/yfF3qihUrcM/Kf0Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.2.9': + resolution: {integrity: sha512-P7VWAmV+WdJluH7ovnRGoiv2i8To7GAZ+kGzfGup635cyL7SyYl3lSUaA3Gp5THf0n/Co5EyEqb2zbqq+nMOHQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.2.9': + resolution: {integrity: sha512-1qixtsE4BK8h+yS3BfmZ09UhA7O/N4IACva6YBr7EBvCJraByTuRcgOTaiA62Tm0vey3UcKXLOaoGHtYmNGEVg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-win32-arm64-msvc@1.2.9': + resolution: {integrity: sha512-ok8IQjcEPs1AKZfuEUznVBrJw+gK4soq+bx8b1X2XoMqVClarc1q5JDmVtWXY1xfr6ZuHTAsPXHTgTrqKTZeww==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.2.9': + resolution: {integrity: sha512-Ip2mXoU0hM0boq3Rf+ekuT653OROSo6aSYcPT1VHE4q52KvyxgFkQgrgb/IEsxOuvQ2fZZbs8khJAyCEPM24/g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@sinclair/typebox@0.27.12': + resolution: {integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==} + + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/express-serve-static-core@4.19.9': + resolution: {integrity: sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg==} + + '@types/express-serve-static-core@5.1.3': + resolution: {integrity: sha512-dPfW8NFiOF4wOHc7+N/QSxlY9cfSsenewGbAz8C8U/MULPd/YZ27LvJUIlzaXie7e6Ove9YunJGgC9tbHD2cKw==} + + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + + '@types/http-proxy@1.17.17': + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/minimatch@6.0.0': + resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} + deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. + + '@types/node-forge@1.3.14': + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} + + '@types/node@26.6.2': + resolution: {integrity: sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/qs@6.15.1': + resolution: {integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} + + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} + + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + + '@ungap/structured-clone@1.4.0': + resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==} + + '@vitejs/plugin-vue@6.0.9': + resolution: {integrity: sha512-rD/MORlhaZMlXWW0rEn4FB4wMinWC0z/D7Ye160S5+Rs1mC8ZDAdcDp4SjKfUhG5t8q1ktcPVw4xuTkPRlzrSA==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: ^3.2.25 + + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} + + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/babel-helper-vue-jsx-merge-props@1.4.0': + resolution: {integrity: sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==} + + '@vue/babel-helper-vue-transform-on@1.5.0': + resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==} + + '@vue/babel-plugin-jsx@1.5.0': + resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.5.0': + resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-plugin-transform-vue-jsx@1.4.0': + resolution: {integrity: sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-preset-app@4.5.19': + resolution: {integrity: sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==} + peerDependencies: + '@babel/core': '*' + core-js: ^3 + vue: ^2 || ^3.0.0-0 + peerDependenciesMeta: + core-js: + optional: true + vue: + optional: true + + '@vue/babel-preset-jsx@1.4.0': + resolution: {integrity: sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + vue: '*' + peerDependenciesMeta: + vue: + optional: true + + '@vue/babel-sugar-composition-api-inject-h@1.4.0': + resolution: {integrity: sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-sugar-composition-api-render-instance@1.4.0': + resolution: {integrity: sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-sugar-functional-vue@1.4.0': + resolution: {integrity: sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-sugar-inject-h@1.4.0': + resolution: {integrity: sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-sugar-v-model@1.4.0': + resolution: {integrity: sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-sugar-v-on@1.4.0': + resolution: {integrity: sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.43': + resolution: {integrity: sha512-zdiLhnbe1QQqgDT8xZMpNmyqZ3qlI+/Q/FHQco57Kwl/b05HhCzN6eVGN9QU9rbga4CrS0H5SYY8VGHZCt/1Hg==} + + '@vue/compiler-dom@3.5.43': + resolution: {integrity: sha512-PEZoAk3NQmsn/ejMzSOCyTYqwGqczrWm70PuhBKjjv1+TCoQAaO/zOqNwjV+honlNstT5ILxtc+8r8UUfj+iEQ==} + + '@vue/compiler-sfc@2.7.16': + resolution: {integrity: sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==} + + '@vue/compiler-sfc@3.5.43': + resolution: {integrity: sha512-FCbrG3XNCRl+js3huuKx4IVHBLTvMkJhVepjbxSPu1gn4yWLaYtGNQdjJGZaMytXB6qb76qQDDmDSLy/vkmleQ==} + + '@vue/compiler-ssr@3.5.43': + resolution: {integrity: sha512-GF62orf7KiJX9RqrHNGrYBudsQGD0OhJ5nDs90O8UiDuS40+YMYomiXu6w6EuvtXuRDc3MSNis3EaaSKAVSWpg==} + + '@vue/component-compiler-utils@3.3.0': + resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==} + + '@vue/language-core@3.3.11': + resolution: {integrity: sha512-QJmpliwAVpC/OxubIByPAhNzsQPRc8/gxlN2qnVzVfIMjMDz/9RnXRFoetjz5yEgXVXyp4LqhXq3V53PjmNzFw==} + + '@vue/reactivity@3.5.43': + resolution: {integrity: sha512-G/c9GyOZNI2jVaaS6OX1EF1SSFSv7H0ERqNTl4+DTFMlZmB5eVAB53aLQNam/7NL2NPtaDD7RdVrzf8uJzMuOA==} + + '@vue/runtime-core@3.5.43': + resolution: {integrity: sha512-hU6U6VnVhBGQDpvlnnDlIB8ZGJBiOcgk2lh/0InltHiz3D8oSkluvuvY+do1G2H3+udeKFsmaBlgVYP7gXQzEw==} + + '@vue/runtime-dom@3.5.43': + resolution: {integrity: sha512-Bb2Jc0YjjJdMt1SJmb9b2L/IWd3I8lIT9x9eS/xvvP9CiVgna0ffua74xKRmt4/uSJ+0r4iN8ex1jrqkhQGWQw==} + + '@vue/server-renderer@3.5.43': + resolution: {integrity: sha512-l2Ygjv9NehV94PSBxNWsAHC0j/eIIKbn92mBuWXAPGLnn6HfJ6MH5ubsd+Nk0YoZ5FRuxWI1P2VSoh+dbPQhCQ==} + + '@vue/shared@3.5.43': + resolution: {integrity: sha512-uksS7YGMR5NZyr4JNq0Rp+QyLns0ueaz20KwzIPW9R0LH1Vnt4E+XUM29PNseEbf1www2gOuhuDi5AKOIXag9Q==} + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@webpack-cli/configtest@1.2.0': + resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} + peerDependencies: + webpack: 4.x.x || 5.x.x + webpack-cli: 4.x.x + + '@webpack-cli/info@1.5.0': + resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} + peerDependencies: + webpack-cli: 4.x.x + + '@webpack-cli/serve@1.7.0': + resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} + peerDependencies: + webpack-cli: 4.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + alien-signals@3.2.1: + resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.3.0: + resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-union@1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.6.1: + resolution: {integrity: sha512-cL1Qz6ADZhcEbny/8HPfe99J6HhNoYtpX2LFLIbhgGE7Q1hlQVkYFdetDN7Id3KiQxhDrHwzlHr/YQCnZ8+xSA==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axios@0.15.3: + resolution: {integrity: sha512-w3/VNaraEcDri16lbemQWQGKfaFk9O0IZkzKlLeF5r6WWDv9TkcXkP+MWkRK8FbxwfozY/liI+qtvhV295t3HQ==} + deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410 + + axios@0.28.1: + resolution: {integrity: sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==} + + babel-loader@8.4.1: + resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + + babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + + babel-plugin-polyfill-corejs2@0.4.17: + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.14.2: + resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.8: + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + baseline-browser-mapping@2.11.25: + resolution: {integrity: sha512-gMmEShwwq7FJqMwvfRwvCl00v4kN+KOfJqXn+f4nrufak5gNHJOksd/60Dvjuz7sI8Y5WiSFBa8FEYr+zoyqCw==} + engines: {node: '>=6.0.0'} + hasBin: true + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + body-parser@1.20.8: + resolution: {integrity: sha512-JNcyFQ64OiijEkPzUBTCe+hyPXUD/3LEldGQ6iF5LR1w00mx9o7xtDWHXBY2iItjdCFGoilOLNQbH943ut7pHA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + bonjour-service@1.4.4: + resolution: {integrity: sha512-jCZcVv7eoc4QesRscwEZtSROBen+6LpKAmBIsQYQrsAeVHLyMXWX/t6eIV5KiRZYNUBl8eVqImEEMQ8L5+c/Kw==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.21: + resolution: {integrity: sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==} + + brace-expansion@5.0.12: + resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} + engines: {node: 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.29.0: + resolution: {integrity: sha512-3GSvyjvDI4Dur1Meg2BekJquu5uF+9R9a1+5M1Mde192eZoXbeXjzgOsgqPS2V8D5wrrip0gR5Hf/GhWQ9ZzaA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + + caniuse-lite@1.0.30001810: + resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chart.js@2.9.4: + resolution: {integrity: sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==} + + chartjs-adapter-moment@0.1.2: + resolution: {integrity: sha512-SiTLtTdjiNVbNoG4Mt4vXyp3bx2uyd8reQt+rkoYNyOeemhSMuNYZGuI3whgSI07WeL4NNVOPtv7EyPMlwjpEQ==} + peerDependencies: + chart.js: '>=2.8.0' + moment: ^2.10.2 + + chartjs-color-string@0.6.0: + resolution: {integrity: sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==} + + chartjs-color@2.4.1: + resolution: {integrity: sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + clean-webpack-plugin@4.0.0: + resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} + engines: {node: '>=10.0.0'} + peerDependencies: + webpack: '>=4.0.0 <6.0.0' + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colord@2.10.0: + resolution: {integrity: sha512-AidJptpBJmjTclAp9BkLwJi0T93fo5epJnbaZslpg6QVzpHjAiveF55mE9AcUJiGMqRHgMDY8soMsQtuNYMHfw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + component-props@1.1.1: + resolution: {integrity: sha512-69pIRJs9fCCHRqCz3390YF2LV1Lu6iEMZ5zuVqqUn+G20V9BNXlMs0cWawWeW9g4Ynmg29JmkG6R7/lUJoGd1Q==} + + component-xor@0.0.4: + resolution: {integrity: sha512-ZIt6sla8gfo+AFVRZoZOertcnD5LJaY2T9CKE2j13NJxQt/mUafD69Bl7/Y4AnpI2LGjiXH7cOfJDx/n2G9edA==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.2: + resolution: {integrity: sha512-o8vI5RE5A6EVVOd9o41jKp41aJom+QTEO/Bx8MYNjexMo/Bv2WOjUfZr+aL0WnYSgymUy6zeguqLTsIhV0gMvQ==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + + consolidate@0.15.1: + resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==} + engines: {node: '>= 0.10.0'} + deprecated: Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog + peerDependencies: + arc-templates: ^0.5.3 + atpl: '>=0.7.6' + babel-core: ^6.26.3 + bracket-template: ^1.1.5 + coffee-script: ^1.12.7 + dot: ^1.1.3 + dust: ^0.3.0 + dustjs-helpers: ^1.7.4 + dustjs-linkedin: ^2.7.5 + eco: ^1.1.0-rc-3 + ect: ^0.5.9 + ejs: ^3.1.5 + haml-coffee: ^1.14.1 + hamlet: ^0.3.3 + hamljs: ^0.6.2 + handlebars: ^4.7.6 + hogan.js: ^3.0.2 + htmling: ^0.0.8 + jade: ^1.11.0 + jazz: ^0.0.18 + jqtpl: ~1.1.0 + just: ^0.1.8 + liquid-node: ^3.0.1 + liquor: ^0.0.5 + lodash: ^4.17.20 + marko: ^3.14.4 + mote: ^0.2.0 + mustache: ^3.0.0 + nunjucks: ^3.2.2 + plates: ~0.4.11 + pug: ^3.0.0 + qejs: ^3.0.5 + ractive: ^1.3.12 + razor-tmpl: ^1.3.1 + react: ^16.13.1 + react-dom: ^16.13.1 + slm: ^2.0.0 + squirrelly: ^5.1.0 + swig: ^1.4.2 + swig-templates: ^2.0.3 + teacup: ^2.0.0 + templayed: '>=0.2.3' + then-jade: '*' + then-pug: '*' + tinyliquid: ^0.2.34 + toffee: ^0.3.6 + twig: ^1.15.2 + twing: ^5.0.2 + underscore: ^1.11.0 + vash: ^0.13.0 + velocityjs: ^2.0.1 + walrus: ^0.10.1 + whiskers: ^0.4.0 + peerDependenciesMeta: + arc-templates: + optional: true + atpl: + optional: true + babel-core: + optional: true + bracket-template: + optional: true + coffee-script: + optional: true + dot: + optional: true + dust: + optional: true + dustjs-helpers: + optional: true + dustjs-linkedin: + optional: true + eco: + optional: true + ect: + optional: true + ejs: + optional: true + haml-coffee: + optional: true + hamlet: + optional: true + hamljs: + optional: true + handlebars: + optional: true + hogan.js: + optional: true + htmling: + optional: true + jade: + optional: true + jazz: + optional: true + jqtpl: + optional: true + just: + optional: true + liquid-node: + optional: true + liquor: + optional: true + lodash: + optional: true + marko: + optional: true + mote: + optional: true + mustache: + optional: true + nunjucks: + optional: true + plates: + optional: true + pug: + optional: true + qejs: + optional: true + ractive: + optional: true + razor-tmpl: + optional: true + react: + optional: true + react-dom: + optional: true + slm: + optional: true + squirrelly: + optional: true + swig: + optional: true + swig-templates: + optional: true + teacup: + optional: true + templayed: + optional: true + then-jade: + optional: true + then-pug: + optional: true + tinyliquid: + optional: true + toffee: + optional: true + twig: + optional: true + twing: + optional: true + underscore: + optional: true + vash: + optional: true + velocityjs: + optional: true + walrus: + optional: true + whiskers: + optional: true + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + copy-webpack-plugin@9.1.0: + resolution: {integrity: sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.1.0 + + core-js-compat@3.50.0: + resolution: {integrity: sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==} + engines: {node: '>=6.4.0'} + + core-js@3.50.0: + resolution: {integrity: sha512-BRWgOLKkFeCgRudR6zrs8p9XJZcE14grzKMMssoYrk6krtuEZ7MTKPIY5RzOnqsEKIR9kst7wNzphttraT+Yqw==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + craftcms-sass@3.5.7: + resolution: {integrity: sha512-QIHiNRVNmmR0A4Kcz8GKHaRWAf9KXu6Ev25DzR8Fi2Yg6reLqql3mhcghVj/XoaPupoWx3DeWnzIGtxH82xTWA==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-declaration-sorter@6.4.1: + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + + css-loader@6.11.0: + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-minimizer-webpack-plugin@4.2.2: + resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@parcel/css': '*' + '@swc/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + lightningcss: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + '@swc/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-default@5.2.14: + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-utils@3.1.0: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano@5.1.15: + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + del@4.1.1: + resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==} + engines: {node: '>=6'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-iterator@1.0.2: + resolution: {integrity: sha512-BMelEjhy08OpoWF3v/jrPtx7PZCyP1VM9yiB7rJk19UVmt7zTN5rqoC0Jea+EyT0M6v/VokL0LxIlGLUOBJZ2g==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + dotenv-defaults@2.0.2: + resolution: {integrity: sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==} + + dotenv-webpack@7.1.1: + resolution: {integrity: sha512-xw/19VqHDkXALtBOJAnnrSU/AZDIQRXczAmJyp0lZv6SH2aBLzUTl96W1MVryJZ7okZ+djZS4Gj4KlZ0xP7deA==} + engines: {node: '>=10'} + peerDependencies: + webpack: ^4 || ^5 + + dotenv@10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} + + dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.433: + resolution: {integrity: sha512-5lCAbyZBjtmUt/RAGHRqrL2q0oEFRThDAsZHHDn9XHa89Qw7gMYOeSicBTy+AHfvo0r6vwsZvqNJTQIQy1BLzA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + enhanced-resolve@5.25.1: + resolution: {integrity: sha512-nGXts5znJzmWPu+mIE9izCOzdg63oJca2mDzGWWTth7sr4aCToKcoyFVBQwN75Ij5Pf6p510EwkTqViTRzDV+w==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + envinfo@7.21.0: + resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==} + engines: {node: '>=4'} + hasBin: true + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} + + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es6-promisify@6.1.1: + resolution: {integrity: sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-vue@8.7.1: + resolution: {integrity: sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-utils@3.0.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + expose-loader@3.1.0: + resolution: {integrity: sha512-2RExSo0yJiqP+xiUue13jQa2IHE8kLDzTI7b6kn+vUlBVvlzNSiLDzo4e5Pp5J039usvTUnxZ8sUOhv0Kg15NA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + express@4.22.3: + resolution: {integrity: sha512-Bdcs4+3qlpVlx2NRn6fgX2Ue2/gGRaPeawebgclM0ERSCqDpA+owF1fdPwjJUTAJWMTuAaxjDf+hzb0/4eKvvw==} + engines: {node: '>= 0.10.0'} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.1.8: + resolution: {integrity: sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.20.3: + resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} + engines: {node: '>= 0.8'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + flatted@3.4.4: + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} + + follow-redirects@1.0.0: + resolution: {integrity: sha512-7s+wBk4z5xTwVJuozRBAyRofWKjD3uG2CUjZfZTrw9f+f+z8ZSxOjAqfIDLtc0Hnz+wGK2Y8qd93nGGjXBYKsQ==} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.6: + resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-monkey@1.1.0: + resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-sum@1.0.2: + resolution: {integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + + html-tags@2.0.0: + resolution: {integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==} + engines: {node: '>=4'} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} + + http-proxy-middleware@2.0.10: + resolution: {integrity: sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + husky@7.0.4: + resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} + engines: {node: '>=12'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immutable@5.1.9: + resolution: {integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + interpret@2.2.0: + resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} + engines: {node: '>= 0.10'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.5.0: + resolution: {integrity: sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==} + engines: {node: '>= 10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.17.0: + resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + + is-path-in-cwd@2.1.0: + resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} + engines: {node: '>=6'} + + is-path-inside@2.1.0: + resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} + engines: {node: '>=6'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-minimizer-webpack-plugin@3.3.0: + resolution: {integrity: sha512-6h3M/6C+2Cf1sZBiYkxnqjNplgKw8nNxL1/ywzENrjIGK/IBELtns6OfloywF10ufaMPJVFKAtRvdTAfT4skJQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.1.0 + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + + laravel-vite-plugin@3.2.0: + resolution: {integrity: sha512-xSxY9Gzeb/eancd8WeK09piAFP+a6i5QIBqNCKNv9L0Eq6wziwzSem7F1GvMSrtjMh5F/QVKFxn8t9naGOA66A==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + fontaine: ^0.8.0 + vite: ^8.0.0 + peerDependenciesMeta: + fontaine: + optional: true + + launch-editor@2.14.1: + resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + + lilconfig@2.0.5: + resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} + engines: {node: '>=10'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@12.5.0: + resolution: {integrity: sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + listr2@4.0.5: + resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} + engines: {node: '>=12'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.find@4.6.0: + resolution: {integrity: sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lodash.isobjectlike@4.0.0: + resolution: {integrity: sha512-bbRt0Dief0yqjkTgpvzisSxnsmY3ZgVJvokHL30UE+ytsvnpNfiNaCJL4XBEWek8koQmrwZidBHb7coXC5vXlA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-source-map@1.1.0: + resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mini-css-extract-plugin@2.10.2: + resolution: {integrity: sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minimizer-webpack-plugin@5.11.0: + resolution: {integrity: sha512-2JVy2DY+iBtfRyrQB5cRM7lfurnJIi6jFTgLip/7FxDu0WxswrIRzr4fBySQ0X7HqM7BcwE28zm+HfQ5V6y4Cg==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@minify-html/node': '*' + '@napi-rs/image': '*' + '@swc/core': '*' + '@swc/css': '*' + '@swc/html': '*' + clean-css: '*' + cssnano: '*' + csso: '*' + esbuild: '*' + html-minifier-terser: '*' + imagemin: '*' + lightningcss: '*' + postcss: '*' + sharp: '*' + svgo: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@minify-html/node': + optional: true + '@napi-rs/image': + optional: true + '@swc/core': + optional: true + '@swc/css': + optional: true + '@swc/html': + optional: true + clean-css: + optional: true + cssnano: + optional: true + csso: + optional: true + esbuild: + optional: true + html-minifier-terser: + optional: true + imagemin: + optional: true + lightningcss: + optional: true + postcss: + optional: true + sharp: + optional: true + svgo: + optional: true + uglify-js: + optional: true + + moment@2.31.0: + resolution: {integrity: sha512-0acOTfMiWOheYS4eoWb80yYMb/JLvVv9SHbs2PehaDzfUG0Bw855SKyk0IKTnPGa5+U2bmi3W68l1+sGLX/pvw==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + + nanoid@3.3.19: + resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-forge@1.4.0: + resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} + engines: {node: '>= 6.13.0'} + + node-releases@2.0.56: + resolution: {integrity: sha512-x0InOIyzgdk+eyaWaRJFH5snEtiImgBgblZ2CyPrLmqqcuMQkEvcDPHbzqbD8eDsSeJbVOjn+crzyzHaM4D+/A==} + engines: {node: '>=18'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + + pidtree@0.5.0: + resolution: {integrity: sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + postcss-calc@8.2.4: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + + postcss-colormin@5.3.1: + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-convert-values@5.1.3: + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-comments@5.1.2: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-duplicates@5.1.0: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-empty@5.1.1: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-overridden@5.1.0: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-loader@6.2.1: + resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + + postcss-merge-longhand@5.1.7: + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-merge-rules@5.1.4: + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-font-values@5.1.0: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-gradients@5.1.1: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-params@5.1.4: + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-selectors@5.2.1: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-normalize-charset@5.1.0: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-display-values@5.1.0: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-positions@5.1.1: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-repeat-style@5.1.1: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-string@5.1.0: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-timing-functions@5.1.0: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-unicode@5.1.1: + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-url@5.1.0: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-whitespace@5.1.1: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-ordered-values@5.1.3: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-initial@5.1.2: + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-transforms@5.1.0: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-selector-parser@6.1.4: + resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.6: + resolution: {integrity: sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==} + engines: {node: '>=4'} + + postcss-svgo@5.1.0: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-unique-selectors@5.1.1: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + + postcss@8.5.28: + resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + proxy-addr@2.0.8: + resolution: {integrity: sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.16.0: + resolution: {integrity: sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + range-parser@1.3.0: + resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==} + engines: {node: '>= 0.6'} + + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@5.1.1: + resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} + engines: {node: '>= 20.19.0'} + + rechoir@0.7.1: + resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} + engines: {node: '>= 0.10'} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.3: + resolution: {integrity: sha512-ycwFAS14Jw4mppvmK4GR/J6u3WpWpjkEApehuHtLc/8VpPNpDMbQ4WjqwplXifGeyKOzHSFLmSPqzksDQE2Sfg==} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rev-hash@3.0.0: + resolution: {integrity: sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg==} + engines: {node: '>=8'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rolldown@1.2.9: + resolution: {integrity: sha512-hx/Pv0N1haXRb11qkfnK5MXB/iqr7i0yjWQqmO9uHqZpBgQSqzc8UsSnEpalsh+j1I8qQ2CkXAkJC8Br3dKSlg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass-loader@12.6.0: + resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + + sass@1.104.1: + resolution: {integrity: sha512-yDA+1aIG3EHgN4V/BvuhCvu61FF6hEd4e+9DxikUm9U0CAGuvdIZ/UYy7qbOxjhbbWQraoyLlMuzdRGOSV5Bmw==} + engines: {node: '>=20.19.0'} + hasBin: true + + sax@1.6.1: + resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} + engines: {node: '>=11.0.0'} + + schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.5.0: + resolution: {integrity: sha512-zJlMCZ0cAR5p/Y4oVpRoqioDMJcGxaXRrQ/4rP4WyR84vc5z/DolXdbvXeDpTwbtocDFr2rhPqHPErDCUtz2kA==} + engines: {node: '>= 10.13.0'} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-index@1.9.2: + resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.10.0: + resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==} + engines: {node: '>= 0.4'} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + + sortablejs@1.15.7: + resolution: {integrity: sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A==} + + source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + stable@0.1.8: + resolution: {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' + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + style-loader@3.3.4: + resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + stylehacks@5.1.1: + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + svgo@2.8.4: + resolution: {integrity: sha512-2GJ4h3rl13qYTdwllaK6QlL8tG+UrM8626V2Ylcd/yBUv2Y/EwLsYisVV6UDCRmlk+C74G8nMpxJCk0RWPdDCw==} + engines: {node: '>=10.13.0'} + hasBin: true + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + terser@5.51.2: + resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==} + engines: {node: '>=10'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + ts-loader@9.6.2: + resolution: {integrity: sha512-R4iuczmtgxvtuI556s+hTZ6/7Ee03VCAk/l/M8LY1OAsUgB7YydsCxkgq9D9pKRaD7GJqUi2u8fp9zZP/ufjKA==} + engines: {node: '>=12.0.0'} + peerDependencies: + loader-utils: '*' + typescript: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + loader-utils: + optional: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@8.9.0: + resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==} + + unescape@1.0.1: + resolution: {integrity: sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==} + engines: {node: '>=0.10.0'} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.3.3: + resolution: {integrity: sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). + hasBin: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite-plugin-full-reload@1.2.0: + resolution: {integrity: sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA==} + + vite@8.3.0: + resolution: {integrity: sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.7.1 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vscode-uri@3.2.0: + resolution: {integrity: sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==} + + vue-eslint-parser@8.3.0: + resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + vue-hot-reload-api@2.3.4: + resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} + + vue-loader@15.11.1: + resolution: {integrity: sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==} + peerDependencies: + '@vue/compiler-sfc': ^3.0.8 + cache-loader: '*' + css-loader: '*' + prettier: '*' + vue-template-compiler: '*' + webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + cache-loader: + optional: true + prettier: + optional: true + vue-template-compiler: + optional: true + + vue-prism-editor@0.6.1: + resolution: {integrity: sha512-UyFLZ242eAplU0C1Tx/ZHSKFTPODQDMBuW9qqgMJyZqHFL2iuIbfT8EWmKtoNUn8w9VWS9IIicPs2odz2eni4Q==} + + vue-select@3.20.4: + resolution: {integrity: sha512-pXIsDUnBR1075qHNEM7mKgX7YnHI3MfCO+7VmXSA1Hywplpqi52jOa0j6EHWQU6MnaW/mBZPuaQtgp3yvks2Kw==} + peerDependencies: + vue: 2.x + + vue-style-loader@4.1.3: + resolution: {integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==} + + vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + + vue-template-es2015-compiler@1.9.1: + resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==} + + vue-tsc@3.3.11: + resolution: {integrity: sha512-gOb0B9rtU2+f1dszwPqSH5kAieIF9ReeLhD3kSRNHv5WZZUQz/JdVXW0RTdqhNTMlQkqKzrTTviqKr/4FYZraQ==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@2.7.16: + resolution: {integrity: sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==} + deprecated: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details. + + vue@3.5.43: + resolution: {integrity: sha512-o5qZoksdnjIKvW1srZ3ab7pcDNYAerBjRe54D0LBLfRdCYFrSgBHVXokMas35czQc0//lmx4/tuY4ZNQ+Rf2Ng==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + vuelidate@0.7.7: + resolution: {integrity: sha512-pT/U2lDI67wkIqI4tum7cMSIfGcAMfB+Phtqh2ttdXURwvHRBJEAQ0tVbUsW9Upg83Q5QH59bnCoXI7A9JDGnA==} + engines: {node: '>= 4.0.0', npm: '>= 3.0.0'} + + vuetable-2@1.7.5: + resolution: {integrity: sha512-cKLD7ufbwNZZA1exOU1U7oXC+nrXq88YwDNAPL8dR9Kk1Pj/HMvLhOr4xw/15748c4OfYxBZQvVTJh4Hnu35AA==} + engines: {node: '>= 4.0.0', npm: '>= 3.0.0'} + + vuex@3.6.2: + resolution: {integrity: sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==} + peerDependencies: + vue: ^2.0.0 + + watchpack@2.5.2: + resolution: {integrity: sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + + webpack-cli@4.10.0: + resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + '@webpack-cli/migrate': '*' + webpack: 4.x.x || 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + '@webpack-cli/migrate': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + + webpack-dev-middleware@5.3.4: + resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + webpack-dev-server@4.15.2: + resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + + webpack-manifest-plugin@4.1.1: + resolution: {integrity: sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==} + engines: {node: '>=12.22.0'} + peerDependencies: + webpack: ^4.44.2 || ^5.47.0 + + webpack-merge-and-include-globally@2.3.4: + resolution: {integrity: sha512-s5dd7m3ycVBlC7C6GAx91JQzbjhxC/NJRuT2sCkg8WCcF8CE1x/7xwVXqgmt0Fr/H/0sX5C5HE2RdU6+vCY5yg==} + peerDependencies: + webpack: '>=1.0.0' + + webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + + webpack-sources@2.3.1: + resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==} + engines: {node: '>=10.13.0'} + + webpack-sources@3.5.1: + resolution: {integrity: sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==} + engines: {node: '>=10.13.0'} + + webpack@5.111.1: + resolution: {integrity: sha512-cNypaz0RP+S4cvQVi1M/3bRUkvNP0xZpL0TjFx+c6jg64VbxD+2weWDgY9UnjRI6dhZgtaj8DU76GGFcJ79xPQ==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + websocket-driver@0.7.5: + resolution: {integrity: sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.21.3: + resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} + 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 + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} + engines: {node: '>= 6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7(supports-color@9.4.0)': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@9.4.0) + '@babel/types': 7.29.8 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3(supports-color@9.4.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.29.9(@babel/core@7.29.7(supports-color@9.4.0))(eslint@8.57.1(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.57.1(supports-color@9.4.0) + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + + '@babel/generator@7.29.8': + dependencies: + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.29.7': + dependencies: + '@babel/types': 7.29.8 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.29.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@9.4.0) + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@9.4.0) + '@babel/traverse': 7.29.8(supports-color@9.4.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-annotate-as-pure': 7.29.7 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + debug: 4.4.3(supports-color@9.4.0) + lodash.debounce: 4.0.8 + resolve: 1.22.12 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-member-expression-to-functions@7.29.7(supports-color@9.4.0)': + dependencies: + '@babel/traverse': 7.29.8(supports-color@9.4.0) + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.29.7(supports-color@9.4.0)': + dependencies: + '@babel/traverse': 7.29.8(supports-color@9.4.0) + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-module-imports': 7.29.7(supports-color@9.4.0) + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.29.7': + dependencies: + '@babel/types': 7.29.8 + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-wrap-function': 7.29.7(supports-color@9.4.0) + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@9.4.0) + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7(supports-color@9.4.0)': + dependencies: + '@babel/traverse': 7.29.8(supports-color@9.4.0) + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helper-wrap-function@7.29.7(supports-color@9.4.0)': + dependencies: + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@9.4.0) + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + + '@babel/parser@7.29.9': + dependencies: + '@babel/types': 7.29.8 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@9.4.0) + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-decorators': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + + '@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-module-imports': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/template': 7.29.7 + + '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.29.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/traverse': 7.29.8(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-regenerator@7.29.8(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-module-imports': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-spread@7.29.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-typescript@7.29.9(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@9.4.0) + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-modules-systemjs': 7.29.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-regenerator': 7.29.8(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-spread': 7.29.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.7(supports-color@9.4.0)) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + core-js-compat: 3.50.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/types': 7.29.8 + esutils: 2.0.3 + + '@babel/preset-typescript@7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-transform-typescript': 7.29.9(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.29.7': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + + '@babel/traverse@7.29.8(supports-color@9.4.0)': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + debug: 4.4.3(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@craftcms/browserslist-config@1.0.0': {} + + '@craftcms/vue@1.0.1(supports-color@9.4.0)': + dependencies: + lodash: 4.18.1 + sortablejs: 1.15.7 + vuetable-2: 1.7.5(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@craftcms/webpack@1.1.2(@vue/compiler-sfc@3.5.43)(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(debug@4.4.3(supports-color@9.4.0))(lightningcss@1.33.0)(loader-utils@2.0.4)(lodash@4.18.1)(prettier@2.8.8)(supports-color@9.4.0)(svgo@2.8.4)(typescript@6.0.3)(vue@2.7.16)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/eslint-parser': 7.29.9(@babel/core@7.29.7(supports-color@9.4.0))(eslint@8.57.1(supports-color@9.4.0)) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@craftcms/browserslist-config': 1.0.0 + '@vue/babel-preset-app': 4.5.19(@babel/core@7.29.7(supports-color@9.4.0))(core-js@3.50.0)(supports-color@9.4.0)(vue@2.7.16) + autoprefixer: 10.6.1(postcss@8.5.28) + babel-loader: 8.4.1(@babel/core@7.29.7(supports-color@9.4.0))(webpack@5.111.1) + clean-webpack-plugin: 4.0.0(webpack@5.111.1) + copy-webpack-plugin: 9.1.0(webpack@5.111.1) + core-js: 3.50.0 + css-loader: 6.11.0(webpack@5.111.1) + css-minimizer-webpack-plugin: 4.2.2(csso@4.2.0)(lightningcss@1.33.0)(webpack@5.111.1) + dotenv: 10.0.0 + dotenv-webpack: 7.1.1(webpack@5.111.1) + eslint: 8.57.1(supports-color@9.4.0) + eslint-plugin-vue: 8.7.1(eslint@8.57.1(supports-color@9.4.0))(supports-color@9.4.0) + expose-loader: 3.1.0(webpack@5.111.1) + glob: 7.2.3 + json-minimizer-webpack-plugin: 3.3.0(webpack@5.111.1) + mini-css-extract-plugin: 2.10.2(webpack@5.111.1) + pkg-dir: 4.2.0 + postcss: 8.5.28 + postcss-loader: 6.2.1(postcss@8.5.28)(webpack@5.111.1) + sass: 1.104.1 + sass-loader: 12.6.0(sass@1.104.1)(webpack@5.111.1) + style-loader: 3.3.4(webpack@5.111.1) + ts-loader: 9.6.2(loader-utils@2.0.4)(typescript@6.0.3)(webpack@5.111.1) + vue-loader: 15.11.1(@vue/compiler-sfc@3.5.43)(css-loader@6.11.0(webpack@5.111.1))(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(webpack@5.111.1) + vue-template-compiler: 2.7.16 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.111.1) + webpack-dev-server: 4.15.2(debug@4.4.3(supports-color@9.4.0))(supports-color@9.4.0)(webpack-cli@4.10.0)(webpack@5.111.1) + webpack-manifest-plugin: 4.1.1(webpack@5.111.1) + webpack-merge: 5.10.0 + webpack-merge-and-include-globally: 2.3.4(webpack@5.111.1) + yargs: 17.7.3 + transitivePeerDependencies: + - '@minify-html/node' + - '@napi-rs/image' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - '@swc/html' + - '@vue/compiler-sfc' + - '@webpack-cli/generators' + - '@webpack-cli/migrate' + - arc-templates + - atpl + - babel-core + - bracket-template + - bufferutil + - cache-loader + - clean-css + - coffee-script + - cssnano + - csso + - debug + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - esbuild + - fibers + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - html-minifier-terser + - htmling + - imagemin + - jade + - jazz + - jqtpl + - just + - lightningcss + - liquid-node + - liquor + - loader-utils + - lodash + - marko + - mote + - mustache + - node-sass + - nunjucks + - plates + - prettier + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - sass-embedded + - sharp + - slm + - squirrelly + - supports-color + - svgo + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - typescript + - uglify-js + - underscore + - utf-8-validate + - vash + - velocityjs + - vue + - walrus + - webpack-bundle-analyzer + - whiskers + + '@discoveryjs/json-ext@0.5.7': {} + + '@eslint-community/eslint-utils@4.10.1(eslint@8.57.1(supports-color@9.4.0))': + dependencies: + eslint: 8.57.1(supports-color@9.4.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/eslintrc@2.1.4(supports-color@9.4.0)': + dependencies: + ajv: 6.15.0 + debug: 4.4.3(supports-color@9.4.0) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.3.2 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.1': {} + + '@humanwhocodes/config-array@0.13.0(supports-color@9.4.0)': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.3(supports-color@9.4.0) + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.12 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 26.6.2 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.6.0': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.6.0 + + '@leichtgewicht/ip-codec@2.0.5': {} + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.3 + + '@oxc-project/types@0.150.0': {} + + '@parcel/watcher-android-arm64@2.6.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.6.0': + optional: true + + '@parcel/watcher-darwin-x64@2.6.0': + optional: true + + '@parcel/watcher-freebsd-x64@2.6.0': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-arm-musl@2.6.0': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.6.0': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-x64-musl@2.6.0': + optional: true + + '@parcel/watcher-win32-arm64@2.6.0': + optional: true + + '@parcel/watcher-win32-x64@2.6.0': + optional: true + + '@parcel/watcher@2.6.0': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.7 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.6.0 + '@parcel/watcher-darwin-arm64': 2.6.0 + '@parcel/watcher-darwin-x64': 2.6.0 + '@parcel/watcher-freebsd-x64': 2.6.0 + '@parcel/watcher-linux-arm-glibc': 2.6.0 + '@parcel/watcher-linux-arm-musl': 2.6.0 + '@parcel/watcher-linux-arm64-glibc': 2.6.0 + '@parcel/watcher-linux-arm64-musl': 2.6.0 + '@parcel/watcher-linux-x64-glibc': 2.6.0 + '@parcel/watcher-linux-x64-musl': 2.6.0 + '@parcel/watcher-win32-arm64': 2.6.0 + '@parcel/watcher-win32-x64': 2.6.0 + optional: true + + '@rolldown/binding-android-arm-eabi@1.2.9': + optional: true + + '@rolldown/binding-android-arm64@1.2.9': + optional: true + + '@rolldown/binding-darwin-arm64@1.2.9': + optional: true + + '@rolldown/binding-darwin-x64@1.2.9': + optional: true + + '@rolldown/binding-freebsd-x64@1.2.9': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.2.9': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.2.9': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.2.9': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.2.9': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.2.9': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.2.9': + optional: true + + '@rolldown/binding-linux-x64-musl@1.2.9': + optional: true + + '@rolldown/binding-openharmony-arm64@1.2.9': + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.2.9': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.2.9': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@sinclair/typebox@0.27.12': {} + + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 26.6.2 + + '@types/bonjour@3.5.13': + dependencies: + '@types/node': 26.6.2 + + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 5.1.3 + '@types/node': 26.6.2 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 26.6.2 + + '@types/estree@1.0.9': {} + + '@types/express-serve-static-core@4.19.9': + dependencies: + '@types/node': 26.6.2 + '@types/qs': 6.15.1 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express-serve-static-core@5.1.3': + dependencies: + '@types/node': 26.6.2 + '@types/qs': 6.15.1 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express@4.17.25': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 4.19.9 + '@types/qs': 6.15.1 + '@types/serve-static': 1.15.10 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 6.0.0 + '@types/node': 26.6.2 + + '@types/http-errors@2.0.5': {} + + '@types/http-proxy@1.17.17': + dependencies: + '@types/node': 26.6.2 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/mime@1.3.5': {} + + '@types/minimatch@6.0.0': + dependencies: + minimatch: 10.2.6 + + '@types/node-forge@1.3.14': + dependencies: + '@types/node': 26.6.2 + + '@types/node@26.6.2': + dependencies: + undici-types: 8.9.0 + + '@types/parse-json@4.0.2': {} + + '@types/qs@6.15.1': {} + + '@types/range-parser@1.2.7': {} + + '@types/retry@0.12.0': {} + + '@types/send@0.17.6': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 26.6.2 + + '@types/send@1.2.1': + dependencies: + '@types/node': 26.6.2 + + '@types/serve-index@1.9.4': + dependencies: + '@types/express': 4.17.25 + + '@types/serve-static@1.15.10': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 26.6.2 + '@types/send': 0.17.6 + + '@types/sockjs@0.3.36': + dependencies: + '@types/node': 26.6.2 + + '@types/ws@8.18.1': + dependencies: + '@types/node': 26.6.2 + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@ungap/structured-clone@1.4.0': {} + + '@vitejs/plugin-vue@6.0.9(vite@8.3.0(@types/node@26.6.2)(sass@1.104.1)(terser@5.51.2))(vue@3.5.43(typescript@6.0.3))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.3.0(@types/node@26.6.2)(sass@1.104.1)(terser@5.51.2) + vue: 3.5.43(typescript@6.0.3) + + '@volar/language-core@2.4.28': + dependencies: + '@volar/source-map': 2.4.28 + + '@volar/source-map@2.4.28': {} + + '@volar/typescript@2.4.28(typescript@6.0.3)': + dependencies: + '@volar/language-core': 2.4.28 + path-browserify: 1.0.1 + vscode-uri: 3.2.0 + optionalDependencies: + typescript: 6.0.3 + + '@vue/babel-helper-vue-jsx-merge-props@1.4.0': {} + + '@vue/babel-helper-vue-transform-on@1.5.0': {} + + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/helper-module-imports': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@9.4.0) + '@babel/types': 7.29.8 + '@vue/babel-helper-vue-transform-on': 1.5.0 + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@vue/shared': 3.5.43 + optionalDependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-module-imports': 7.29.7(supports-color@9.4.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/parser': 7.29.9 + '@vue/compiler-sfc': 3.5.43 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-transform-vue-jsx@1.4.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-module-imports': 7.29.7(supports-color@9.4.0) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 + html-tags: 2.0.0 + lodash.kebabcase: 4.1.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-preset-app@4.5.19(@babel/core@7.29.7(supports-color@9.4.0))(core-js@3.50.0)(supports-color@9.4.0)(vue@2.7.16)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-imports': 7.29.7(supports-color@9.4.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@babel/runtime': 7.29.7 + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@vue/babel-preset-jsx': 1.4.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)(vue@2.7.16) + babel-plugin-dynamic-import-node: 2.3.3 + core-js-compat: 3.50.0 + semver: 6.3.1 + optionalDependencies: + core-js: 3.50.0 + vue: 2.7.16 + transitivePeerDependencies: + - supports-color + + '@vue/babel-preset-jsx@1.4.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)(vue@2.7.16)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@vue/babel-sugar-composition-api-inject-h': 1.4.0(@babel/core@7.29.7(supports-color@9.4.0)) + '@vue/babel-sugar-composition-api-render-instance': 1.4.0(@babel/core@7.29.7(supports-color@9.4.0)) + '@vue/babel-sugar-functional-vue': 1.4.0(@babel/core@7.29.7(supports-color@9.4.0)) + '@vue/babel-sugar-inject-h': 1.4.0(@babel/core@7.29.7(supports-color@9.4.0)) + '@vue/babel-sugar-v-model': 1.4.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + '@vue/babel-sugar-v-on': 1.4.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + optionalDependencies: + vue: 2.7.16 + transitivePeerDependencies: + - supports-color + + '@vue/babel-sugar-composition-api-inject-h@1.4.0(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + + '@vue/babel-sugar-composition-api-render-instance@1.4.0(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + + '@vue/babel-sugar-functional-vue@1.4.0(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + + '@vue/babel-sugar-inject-h@1.4.0(@babel/core@7.29.7(supports-color@9.4.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + + '@vue/babel-sugar-v-model@1.4.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + camelcase: 5.3.1 + html-tags: 2.0.0 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-sugar-v-on@1.4.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0)': + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@9.4.0)) + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + camelcase: 5.3.1 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.43': + dependencies: + '@babel/parser': 7.29.9 + '@vue/shared': 3.5.43 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.43': + dependencies: + '@vue/compiler-core': 3.5.43 + '@vue/shared': 3.5.43 + + '@vue/compiler-sfc@2.7.16': + dependencies: + '@babel/parser': 7.29.9 + postcss: 8.5.28 + source-map: 0.6.1 + optionalDependencies: + prettier: 2.8.8 + + '@vue/compiler-sfc@3.5.43': + dependencies: + '@babel/parser': 7.29.9 + '@vue/compiler-core': 3.5.43 + '@vue/compiler-dom': 3.5.43 + '@vue/compiler-ssr': 3.5.43 + '@vue/shared': 3.5.43 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.28 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.43': + dependencies: + '@vue/compiler-dom': 3.5.43 + '@vue/shared': 3.5.43 + + '@vue/component-compiler-utils@3.3.0(lodash@4.18.1)': + dependencies: + consolidate: 0.15.1(lodash@4.18.1) + hash-sum: 1.0.2 + lru-cache: 4.1.5 + merge-source-map: 1.1.0 + postcss: 7.0.39 + postcss-selector-parser: 6.1.4 + source-map: 0.6.1 + vue-template-es2015-compiler: 1.9.1 + optionalDependencies: + prettier: 2.8.8 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + + '@vue/language-core@3.3.11': + dependencies: + '@volar/language-core': 2.4.28 + '@vue/compiler-dom': 3.5.43 + '@vue/shared': 3.5.43 + alien-signals: 3.2.1 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + picomatch: 4.0.7 + + '@vue/reactivity@3.5.43': + dependencies: + '@vue/shared': 3.5.43 + + '@vue/runtime-core@3.5.43': + dependencies: + '@vue/reactivity': 3.5.43 + '@vue/shared': 3.5.43 + + '@vue/runtime-dom@3.5.43': + dependencies: + '@vue/reactivity': 3.5.43 + '@vue/runtime-core': 3.5.43 + '@vue/shared': 3.5.43 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.43': + dependencies: + '@vue/compiler-ssr': 3.5.43 + '@vue/runtime-dom': 3.5.43 + '@vue/shared': 3.5.43 + + '@vue/shared@3.5.43': {} + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.111.1)': + dependencies: + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.111.1) + + '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)': + dependencies: + envinfo: 7.21.0 + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.111.1) + + '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.15.2)': + dependencies: + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.111.1) + optionalDependencies: + webpack-dev-server: 4.15.2(debug@4.4.3(supports-color@9.4.0))(supports-color@9.4.0)(webpack-cli@4.10.0)(webpack@5.111.1) + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@8.18.0): + dependencies: + acorn: 8.18.0 + + acorn@8.18.0: {} + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv-formats@3.0.1(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv-keywords@3.5.2(ajv@6.15.0): + dependencies: + ajv: 6.15.0 + + ajv-keywords@5.1.0(ajv@8.20.0): + dependencies: + ajv: 8.20.0 + fast-deep-equal: 3.1.3 + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.8 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + alien-signals@3.2.1: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-html-community@0.0.8: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.3.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + argparse@2.0.1: {} + + array-flatten@1.1.1: {} + + array-union@1.0.2: + dependencies: + array-uniq: 1.0.3 + + array-union@2.1.0: {} + + array-uniq@1.0.3: {} + + astral-regex@2.0.0: {} + + asynckit@0.4.0: {} + + autoprefixer@10.6.1(postcss@8.5.28): + dependencies: + browserslist: 4.29.0 + caniuse-lite: 1.0.30001810 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + axios@0.15.3(supports-color@9.4.0): + dependencies: + follow-redirects: 1.0.0(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + axios@0.28.1(debug@4.4.3(supports-color@9.4.0)): + dependencies: + follow-redirects: 1.16.0(debug@4.4.3(supports-color@9.4.0)) + form-data: 4.0.6 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-loader@8.4.1(@babel/core@7.29.7(supports-color@9.4.0))(webpack@5.111.1): + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + babel-plugin-dynamic-import-node@2.3.3: + dependencies: + object.assign: 4.1.7 + + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0): + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0): + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + core-js-compat: 3.50.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0): + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + core-js-compat: 3.50.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0): + dependencies: + '@babel/core': 7.29.7(supports-color@9.4.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@9.4.0))(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + baseline-browser-mapping@2.11.25: {} + + batch@0.6.1: {} + + big.js@5.2.2: {} + + binary-extensions@2.3.0: {} + + bluebird@3.7.2: {} + + body-parser@1.20.8(supports-color@9.4.0): + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9(supports-color@9.4.0) + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.16.0 + raw-body: 2.5.3 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + bonjour-service@1.4.4: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + + boolbase@1.0.0: {} + + brace-expansion@1.1.21: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@5.0.12: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.29.0: + dependencies: + baseline-browser-mapping: 2.11.25 + caniuse-lite: 1.0.30001810 + electron-to-chromium: 1.5.433 + node-releases: 2.0.56 + update-browserslist-db: 1.3.3(browserslist@4.29.0) + + buffer-from@1.1.2: {} + + bytes@3.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + caniuse-api@3.0.0: + dependencies: + browserslist: 4.29.0 + caniuse-lite: 1.0.30001810 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001810: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chart.js@2.9.4: + dependencies: + chartjs-color: 2.4.1 + moment: 2.31.0 + + chartjs-adapter-moment@0.1.2(chart.js@2.9.4)(moment@2.31.0): + dependencies: + chart.js: 2.9.4 + moment: 2.31.0 + + chartjs-color-string@0.6.0: + dependencies: + color-name: 1.1.4 + + chartjs-color@2.4.1: + dependencies: + chartjs-color-string: 0.6.0 + color-convert: 1.9.3 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@5.0.0: + dependencies: + readdirp: 5.1.1 + + chrome-trace-event@1.0.4: {} + + ci-info@3.9.0: {} + + clean-stack@2.2.0: {} + + clean-webpack-plugin@4.0.0(webpack@5.111.1): + dependencies: + del: 4.1.1 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-truncate@2.1.0: + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + + cli-truncate@3.1.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colord@2.10.0: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@2.20.3: {} + + commander@7.2.0: {} + + commander@9.5.0: {} + + commondir@1.0.1: {} + + component-props@1.1.1: {} + + component-xor@0.0.4: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.2(supports-color@9.4.0): + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9(supports-color@9.4.0) + destroy: 1.2.0 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + connect-history-api-fallback@2.0.0: {} + + consolidate@0.15.1(lodash@4.18.1): + dependencies: + bluebird: 3.7.2 + optionalDependencies: + lodash: 4.18.1 + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.7: {} + + cookie@0.7.2: {} + + copy-webpack-plugin@9.1.0(webpack@5.111.1): + dependencies: + fast-glob: 3.3.3 + glob-parent: 6.0.2 + globby: 11.1.0 + normalize-path: 3.0.0 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + core-js-compat@3.50.0: + dependencies: + browserslist: 4.29.0 + + core-js@3.50.0: {} + + core-util-is@1.0.3: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.3 + + craftcms-sass@3.5.7: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-declaration-sorter@6.4.1(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + + css-loader@6.11.0(webpack@5.111.1): + dependencies: + icss-utils: 5.1.0(postcss@8.5.28) + postcss: 8.5.28 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.28) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.28) + postcss-modules-scope: 3.2.1(postcss@8.5.28) + postcss-modules-values: 4.0.0(postcss@8.5.28) + postcss-value-parser: 4.2.0 + semver: 7.8.5 + optionalDependencies: + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + css-minimizer-webpack-plugin@4.2.2(csso@4.2.0)(lightningcss@1.33.0)(webpack@5.111.1): + dependencies: + cssnano: 5.1.15(postcss@8.5.28) + jest-worker: 29.7.0 + postcss: 8.5.28 + schema-utils: 4.5.0 + serialize-javascript: 6.0.2 + source-map: 0.6.1 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + optionalDependencies: + csso: 4.2.0 + lightningcss: 1.33.0 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-what@6.2.2: {} + + cssesc@3.0.0: {} + + cssnano-preset-default@5.2.14(postcss@8.5.28): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.5.28) + cssnano-utils: 3.1.0(postcss@8.5.28) + postcss: 8.5.28 + postcss-calc: 8.2.4(postcss@8.5.28) + postcss-colormin: 5.3.1(postcss@8.5.28) + postcss-convert-values: 5.1.3(postcss@8.5.28) + postcss-discard-comments: 5.1.2(postcss@8.5.28) + postcss-discard-duplicates: 5.1.0(postcss@8.5.28) + postcss-discard-empty: 5.1.1(postcss@8.5.28) + postcss-discard-overridden: 5.1.0(postcss@8.5.28) + postcss-merge-longhand: 5.1.7(postcss@8.5.28) + postcss-merge-rules: 5.1.4(postcss@8.5.28) + postcss-minify-font-values: 5.1.0(postcss@8.5.28) + postcss-minify-gradients: 5.1.1(postcss@8.5.28) + postcss-minify-params: 5.1.4(postcss@8.5.28) + postcss-minify-selectors: 5.2.1(postcss@8.5.28) + postcss-normalize-charset: 5.1.0(postcss@8.5.28) + postcss-normalize-display-values: 5.1.0(postcss@8.5.28) + postcss-normalize-positions: 5.1.1(postcss@8.5.28) + postcss-normalize-repeat-style: 5.1.1(postcss@8.5.28) + postcss-normalize-string: 5.1.0(postcss@8.5.28) + postcss-normalize-timing-functions: 5.1.0(postcss@8.5.28) + postcss-normalize-unicode: 5.1.1(postcss@8.5.28) + postcss-normalize-url: 5.1.0(postcss@8.5.28) + postcss-normalize-whitespace: 5.1.1(postcss@8.5.28) + postcss-ordered-values: 5.1.3(postcss@8.5.28) + postcss-reduce-initial: 5.1.2(postcss@8.5.28) + postcss-reduce-transforms: 5.1.0(postcss@8.5.28) + postcss-svgo: 5.1.0(postcss@8.5.28) + postcss-unique-selectors: 5.1.1(postcss@8.5.28) + + cssnano-utils@3.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + + cssnano@5.1.15(postcss@8.5.28): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.5.28) + lilconfig: 2.1.0 + postcss: 8.5.28 + yaml: 1.10.3 + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + csstype@3.2.3: {} + + de-indent@1.0.2: {} + + debug@2.6.9(supports-color@9.4.0): + dependencies: + ms: 2.0.0 + optionalDependencies: + supports-color: 9.4.0 + + debug@4.4.3(supports-color@9.4.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 9.4.0 + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + del@4.1.1: + dependencies: + '@types/glob': 7.2.0 + globby: 6.1.0 + is-path-cwd: 2.2.0 + is-path-in-cwd: 2.1.0 + p-map: 2.1.0 + pify: 4.0.1 + rimraf: 2.7.1 + + delayed-stream@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + destroy@1.2.0: {} + + detect-libc@2.1.2: {} + + detect-node@2.1.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-iterator@1.0.2: + dependencies: + component-props: 1.1.1 + component-xor: 0.0.4 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + dotenv-defaults@2.0.2: + dependencies: + dotenv: 8.6.0 + + dotenv-webpack@7.1.1(webpack@5.111.1): + dependencies: + dotenv-defaults: 2.0.2 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + dotenv@10.0.0: {} + + dotenv@8.6.0: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.433: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@3.0.0: {} + + encodeurl@2.0.0: {} + + enhanced-resolve@5.25.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + entities@2.2.0: {} + + entities@7.0.1: {} + + envinfo@7.21.0: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.3.2: {} + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + es6-promisify@6.1.1: {} + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@4.0.0: {} + + eslint-plugin-vue@8.7.1(eslint@8.57.1(supports-color@9.4.0))(supports-color@9.4.0): + dependencies: + eslint: 8.57.1(supports-color@9.4.0) + eslint-utils: 3.0.0(eslint@8.57.1(supports-color@9.4.0)) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.4 + semver: 7.8.5 + vue-eslint-parser: 8.3.0(eslint@8.57.1(supports-color@9.4.0))(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-utils@3.0.0(eslint@8.57.1(supports-color@9.4.0)): + dependencies: + eslint: 8.57.1(supports-color@9.4.0) + eslint-visitor-keys: 2.1.0 + + eslint-visitor-keys@2.1.0: {} + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.1(supports-color@9.4.0): + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@8.57.1(supports-color@9.4.0)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/eslintrc': 2.1.4(supports-color@9.4.0) + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0(supports-color@9.4.0) + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.4.0 + ajv: 6.15.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3(supports-color@9.4.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.3.2 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) + eslint-visitor-keys: 3.4.3 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + expose-loader@3.1.0(webpack@5.111.1): + dependencies: + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + express@4.22.3(supports-color@9.4.0): + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.8(supports-color@9.4.0) + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9(supports-color@9.4.0) + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.2(supports-color@9.4.0) + fresh: 0.5.2 + http-errors: 2.0.1 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.13 + proxy-addr: 2.0.8 + qs: 6.16.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.2(supports-color@9.4.0) + serve-static: 1.16.3(supports-color@9.4.0) + setprototypeof: 1.2.0 + statuses: 2.0.2 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.1.8: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.20.3: + dependencies: + reusify: 1.1.0 + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.5 + + fdir@6.5.0(picomatch@4.0.7): + optionalDependencies: + picomatch: 4.0.7 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.2(supports-color@9.4.0): + dependencies: + debug: 2.6.9(supports-color@9.4.0) + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.4.4 + keyv: 4.5.4 + rimraf: 3.0.2 + + flat@5.0.2: {} + + flatted@3.4.4: {} + + follow-redirects@1.0.0(supports-color@9.4.0): + dependencies: + debug: 2.6.9(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + follow-redirects@1.16.0(debug@4.4.3(supports-color@9.4.0)): + optionalDependencies: + debug: 4.4.3(supports-color@9.4.0) + + form-data@4.0.6: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.4 + mime-types: 2.1.35 + + forwarded@0.2.0: {} + + fraction.js@5.3.4: {} + + fresh@0.5.2: {} + + fs-monkey@1.1.0: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + get-stream@6.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@6.1.0: + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + handle-thing@2.0.1: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash-sum@1.0.2: {} + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + html-entities@2.6.0: {} + + html-tags@2.0.0: {} + + http-deceiver@1.2.7: {} + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + http-parser-js@0.5.10: {} + + http-proxy-middleware@2.0.10(@types/express@4.17.25)(debug@4.4.3(supports-color@9.4.0)): + dependencies: + '@types/http-proxy': 1.17.17 + http-proxy: 1.18.1(debug@4.4.3(supports-color@9.4.0)) + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + optionalDependencies: + '@types/express': 4.17.25 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1(debug@4.4.3(supports-color@9.4.0)): + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.16.0(debug@4.4.3(supports-color@9.4.0)) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + human-signals@2.1.0: {} + + husky@7.0.4: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + icss-utils@5.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + + ignore@5.3.2: {} + + immutable@5.1.9: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + interpret@2.2.0: {} + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.5.0: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.17.0: + dependencies: + hasown: 2.0.4 + + is-docker@2.2.1: {} + + is-extendable@0.1.1: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-path-cwd@2.2.0: {} + + is-path-in-cwd@2.1.0: + dependencies: + is-path-inside: 2.1.0 + + is-path-inside@2.1.0: + dependencies: + path-is-inside: 1.0.2 + + is-path-inside@3.0.3: {} + + is-plain-obj@3.0.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-stream@2.0.1: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isobject@3.0.1: {} + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 26.6.2 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 26.6.2 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@29.7.0: + dependencies: + '@types/node': 26.6.2 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + js-tokens@4.0.0: {} + + js-yaml@4.3.2: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-minimizer-webpack-plugin@3.3.0(webpack@5.111.1): + dependencies: + schema-utils: 4.5.0 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + klona@2.0.6: {} + + laravel-vite-plugin@3.2.0(vite@8.3.0(@types/node@26.6.2)(sass@1.104.1)(terser@5.51.2)): + dependencies: + picocolors: 1.1.1 + tinyglobby: 0.2.17 + vite: 8.3.0(@types/node@26.6.2)(sass@1.104.1)(terser@5.51.2) + vite-plugin-full-reload: 1.2.0 + + launch-editor@2.14.1: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.10.0 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + + lightningcss-linux-arm64-musl@1.33.0: + optional: true + + lightningcss-linux-x64-gnu@1.33.0: + optional: true + + lightningcss-linux-x64-musl@1.33.0: + optional: true + + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + + lightningcss-win32-x64-msvc@1.33.0: + optional: true + + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + + lilconfig@2.0.5: {} + + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + lint-staged@12.5.0: + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + commander: 9.5.0 + debug: 4.4.3(supports-color@9.4.0) + execa: 5.1.1 + lilconfig: 2.0.5 + listr2: 4.0.5 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-inspect: 1.13.4 + pidtree: 0.5.0 + string-argv: 0.3.2 + supports-color: 9.4.0 + yaml: 1.10.3 + transitivePeerDependencies: + - enquirer + + listr2@4.0.5: + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.4.1 + rxjs: 7.8.2 + through: 2.3.8 + wrap-ansi: 7.0.0 + + loader-utils@1.4.2: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.debounce@4.0.8: {} + + lodash.find@4.6.0: {} + + lodash.isequal@4.5.0: {} + + lodash.isobjectlike@4.0.0: {} + + lodash.kebabcase@4.1.1: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.uniq@4.5.0: {} + + lodash@4.18.1: {} + + log-update@4.0.0: + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + math-intrinsics@1.1.0: {} + + mdn-data@2.0.14: {} + + media-typer@0.3.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.1.0 + + merge-descriptors@1.0.3: {} + + merge-source-map@1.1.0: + dependencies: + source-map: 0.6.1 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + mini-css-extract-plugin@2.10.2(webpack@5.111.1): + dependencies: + schema-utils: 4.5.0 + tapable: 2.3.3 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + minimalistic-assert@1.0.1: {} + + minimatch@10.2.6: + dependencies: + brace-expansion: 5.0.12 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.21 + + minimist@1.2.8: {} + + minimizer-webpack-plugin@5.11.0(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack@5.111.1): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.5.0 + terser: 5.51.2 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + optionalDependencies: + cssnano: 5.1.15(postcss@8.5.28) + csso: 4.2.0 + lightningcss: 1.33.0 + postcss: 8.5.28 + svgo: 2.8.4 + + moment@2.31.0: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + + nanoid@3.3.19: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + neo-async@2.6.2: {} + + node-addon-api@7.1.1: + optional: true + + node-forge@1.4.0: {} + + node-releases@2.0.56: {} + + normalize-path@3.0.0: {} + + normalize-url@6.1.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + obuf@1.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.1.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@2.1.0: {} + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-try@2.2.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.7 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parseurl@1.3.3: {} + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-is-inside@1.0.2: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-to-regexp@0.1.13: {} + + path-type@4.0.0: {} + + picocolors@0.2.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.7: {} + + pidtree@0.5.0: {} + + pify@2.3.0: {} + + pify@4.0.1: {} + + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + postcss-calc@8.2.4(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-selector-parser: 6.1.4 + postcss-value-parser: 4.2.0 + + postcss-colormin@5.3.1(postcss@8.5.28): + dependencies: + browserslist: 4.29.0 + caniuse-api: 3.0.0 + colord: 2.10.0 + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-convert-values@5.1.3(postcss@8.5.28): + dependencies: + browserslist: 4.29.0 + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@5.1.2(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + + postcss-discard-duplicates@5.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + + postcss-discard-empty@5.1.1(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + + postcss-discard-overridden@5.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + + postcss-loader@6.2.1(postcss@8.5.28)(webpack@5.111.1): + dependencies: + cosmiconfig: 7.1.0 + klona: 2.0.6 + postcss: 8.5.28 + semver: 7.8.5 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + postcss-merge-longhand@5.1.7(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.5.28) + + postcss-merge-rules@5.1.4(postcss@8.5.28): + dependencies: + browserslist: 4.29.0 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.5.28) + postcss: 8.5.28 + postcss-selector-parser: 6.1.4 + + postcss-minify-font-values@5.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@5.1.1(postcss@8.5.28): + dependencies: + colord: 2.10.0 + cssnano-utils: 3.1.0(postcss@8.5.28) + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-minify-params@5.1.4(postcss@8.5.28): + dependencies: + browserslist: 4.29.0 + cssnano-utils: 3.1.0(postcss@8.5.28) + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@5.2.1(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-selector-parser: 6.1.4 + + postcss-modules-extract-imports@3.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.28): + dependencies: + icss-utils: 5.1.0(postcss@8.5.28) + postcss: 8.5.28 + postcss-selector-parser: 7.1.6 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-selector-parser: 7.1.6 + + postcss-modules-values@4.0.0(postcss@8.5.28): + dependencies: + icss-utils: 5.1.0(postcss@8.5.28) + postcss: 8.5.28 + + postcss-normalize-charset@5.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + + postcss-normalize-display-values@5.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@5.1.1(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@5.1.1(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@5.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@5.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@5.1.1(postcss@8.5.28): + dependencies: + browserslist: 4.29.0 + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@5.1.0(postcss@8.5.28): + dependencies: + normalize-url: 6.1.0 + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@5.1.1(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@5.1.3(postcss@8.5.28): + dependencies: + cssnano-utils: 3.1.0(postcss@8.5.28) + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@5.1.2(postcss@8.5.28): + dependencies: + browserslist: 4.29.0 + caniuse-api: 3.0.0 + postcss: 8.5.28 + + postcss-reduce-transforms@5.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + + postcss-selector-parser@6.1.4: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.6: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@5.1.0(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-value-parser: 4.2.0 + svgo: 2.8.4 + + postcss-unique-selectors@5.1.1(postcss@8.5.28): + dependencies: + postcss: 8.5.28 + postcss-selector-parser: 6.1.4 + + postcss-value-parser@4.2.0: {} + + postcss@7.0.39: + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + + postcss@8.5.28: + dependencies: + nanoid: 3.3.19 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@2.8.8: {} + + prismjs@1.30.0: {} + + process-nextick-args@2.0.1: {} + + proxy-addr@2.0.8: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@1.1.0: {} + + pseudomap@1.0.2: {} + + punycode@2.3.1: {} + + qs@6.16.0: + dependencies: + es-define-property: 1.0.1 + side-channel: 1.1.1 + + queue-microtask@1.2.3: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + range-parser@1.3.0: {} + + raw-body@2.5.3: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.2 + + readdirp@5.1.1: {} + + rechoir@0.7.1: + dependencies: + resolve: 1.22.12 + + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.3 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + regjsgen@0.8.0: {} + + regjsparser@0.13.3: + dependencies: + jsesc: 3.1.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.17.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.13.1: {} + + reusify@1.1.0: {} + + rev-hash@3.0.0: {} + + rfdc@1.4.1: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rolldown@1.2.9: + dependencies: + '@oxc-project/types': 0.150.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm-eabi': 1.2.9 + '@rolldown/binding-android-arm64': 1.2.9 + '@rolldown/binding-darwin-arm64': 1.2.9 + '@rolldown/binding-darwin-x64': 1.2.9 + '@rolldown/binding-freebsd-x64': 1.2.9 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.9 + '@rolldown/binding-linux-arm64-gnu': 1.2.9 + '@rolldown/binding-linux-arm64-musl': 1.2.9 + '@rolldown/binding-linux-ppc64-gnu': 1.2.9 + '@rolldown/binding-linux-s390x-gnu': 1.2.9 + '@rolldown/binding-linux-x64-gnu': 1.2.9 + '@rolldown/binding-linux-x64-musl': 1.2.9 + '@rolldown/binding-openharmony-arm64': 1.2.9 + '@rolldown/binding-win32-arm64-msvc': 1.2.9 + '@rolldown/binding-win32-x64-msvc': 1.2.9 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sass-loader@12.6.0(sass@1.104.1)(webpack@5.111.1): + dependencies: + klona: 2.0.6 + neo-async: 2.6.2 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + optionalDependencies: + sass: 1.104.1 + + sass@1.104.1: + dependencies: + chokidar: 5.0.0 + immutable: 5.1.9 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.6.0 + + sax@1.6.1: {} + + schema-utils@2.7.1: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.15.0 + ajv-keywords: 3.5.2(ajv@6.15.0) + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.15.0 + ajv-keywords: 3.5.2(ajv@6.15.0) + + schema-utils@4.5.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.20.0 + ajv-formats: 3.0.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.14 + node-forge: 1.4.0 + + semver@6.3.1: {} + + semver@7.8.5: {} + + send@0.19.2(supports-color@9.4.0): + dependencies: + debug: 2.6.9(supports-color@9.4.0) + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-index@1.9.2(supports-color@9.4.0): + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9(supports-color@9.4.0) + escape-html: 1.0.3 + http-errors: 1.8.1 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.3(supports-color@9.4.0): + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.2(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + setprototypeof@1.2.0: {} + + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.10.0: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + slash@3.0.0: {} + + slice-ansi@3.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 4.0.0 + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.5 + + sortablejs@1.15.7: {} + + source-list-map@2.0.1: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + spdy-transport@3.0.0(supports-color@9.4.0): + dependencies: + debug: 4.4.3(supports-color@9.4.0) + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2(supports-color@9.4.0): + dependencies: + debug: 4.4.3(supports-color@9.4.0) + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + stable@0.1.8: {} + + statuses@1.5.0: {} + + statuses@2.0.2: {} + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.3.0 + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + style-loader@3.3.4(webpack@5.111.1): + dependencies: + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + stylehacks@5.1.1(postcss@8.5.28): + dependencies: + browserslist: 4.29.0 + postcss: 8.5.28 + postcss-selector-parser: 6.1.4 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-color@9.4.0: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-tags@1.0.0: {} + + svgo@2.8.4: + dependencies: + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.1.1 + sax: 1.6.1 + stable: 0.1.8 + + tapable@2.3.3: {} + + terser@5.51.2: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.18.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-table@0.2.0: {} + + through@2.3.8: {} + + thunky@1.1.0: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + ts-loader@9.6.2(loader-utils@2.0.4)(typescript@6.0.3)(webpack@5.111.1): + dependencies: + chalk: 4.1.2 + picomatch: 4.0.7 + source-map: 0.7.6 + typescript: 6.0.3 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + optionalDependencies: + loader-utils: 2.0.4 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typescript@6.0.3: {} + + undici-types@8.9.0: {} + + unescape@1.0.1: + dependencies: + extend-shallow: 2.0.1 + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + + unpipe@1.0.0: {} + + update-browserslist-db@1.3.3(browserslist@4.29.0): + dependencies: + browserslist: 4.29.0 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + uuid@8.3.2: {} + + vary@1.1.2: {} + + vite-plugin-full-reload@1.2.0: + dependencies: + picocolors: 1.1.1 + picomatch: 2.3.2 + + vite@8.3.0(@types/node@26.6.2)(sass@1.104.1)(terser@5.51.2): + dependencies: + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.28 + rolldown: 1.2.9 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 26.6.2 + fsevents: 2.3.3 + sass: 1.104.1 + terser: 5.51.2 + + vscode-uri@3.2.0: {} + + vue-eslint-parser@8.3.0(eslint@8.57.1(supports-color@9.4.0))(supports-color@9.4.0): + dependencies: + debug: 4.4.3(supports-color@9.4.0) + eslint: 8.57.1(supports-color@9.4.0) + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.7.0 + lodash: 4.18.1 + semver: 7.8.5 + transitivePeerDependencies: + - supports-color + + vue-hot-reload-api@2.3.4: {} + + vue-loader@15.11.1(@vue/compiler-sfc@3.5.43)(css-loader@6.11.0(webpack@5.111.1))(lodash@4.18.1)(prettier@2.8.8)(vue-template-compiler@2.7.16)(webpack@5.111.1): + dependencies: + '@vue/component-compiler-utils': 3.3.0(lodash@4.18.1) + css-loader: 6.11.0(webpack@5.111.1) + hash-sum: 1.0.2 + loader-utils: 1.4.2 + vue-hot-reload-api: 2.3.4 + vue-style-loader: 4.1.3 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + optionalDependencies: + '@vue/compiler-sfc': 3.5.43 + prettier: 2.8.8 + vue-template-compiler: 2.7.16 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + + vue-prism-editor@0.6.1: + dependencies: + dom-iterator: 1.0.2 + escape-html: 1.0.3 + unescape: 1.0.1 + + vue-select@3.20.4(vue@2.7.16): + dependencies: + vue: 2.7.16 + + vue-style-loader@4.1.3: + dependencies: + hash-sum: 1.0.2 + loader-utils: 1.4.2 + + vue-template-compiler@2.7.16: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + vue: 2.7.16 + + vue-template-es2015-compiler@1.9.1: {} + + vue-tsc@3.3.11(typescript@6.0.3): + dependencies: + '@volar/typescript': 2.4.28(typescript@6.0.3) + '@vue/language-core': 3.3.11 + typescript: 6.0.3 + + vue@2.7.16: + dependencies: + '@vue/compiler-sfc': 2.7.16 + csstype: 3.2.3 + + vue@3.5.43(typescript@6.0.3): + dependencies: + '@vue/compiler-dom': 3.5.43 + '@vue/compiler-sfc': 3.5.43 + '@vue/runtime-dom': 3.5.43 + '@vue/server-renderer': 3.5.43 + '@vue/shared': 3.5.43 + optionalDependencies: + typescript: 6.0.3 + + vuelidate@0.7.7: {} + + vuetable-2@1.7.5(supports-color@9.4.0): + dependencies: + axios: 0.15.3(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + vuex@3.6.2(vue@2.7.16): + dependencies: + vue: 2.7.16 + + watchpack@2.5.2: + dependencies: + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + webpack-cli@4.10.0(webpack-dev-server@4.15.2)(webpack@5.111.1): + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.111.1) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.15.2) + colorette: 2.0.20 + commander: 7.2.0 + cross-spawn: 7.0.6 + fastest-levenshtein: 1.0.16 + import-local: 3.2.0 + interpret: 2.2.0 + rechoir: 0.7.1 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + webpack-merge: 5.10.0 + optionalDependencies: + webpack-dev-server: 4.15.2(debug@4.4.3(supports-color@9.4.0))(supports-color@9.4.0)(webpack-cli@4.10.0)(webpack@5.111.1) + + webpack-dev-middleware@5.3.4(webpack@5.111.1): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.3.0 + schema-utils: 4.5.0 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + webpack-dev-server@4.15.2(debug@4.4.3(supports-color@9.4.0))(supports-color@9.4.0)(webpack-cli@4.10.0)(webpack@5.111.1): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.25 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.10 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.4.4 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.2(supports-color@9.4.0) + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.22.3(supports-color@9.4.0) + graceful-fs: 4.2.11 + html-entities: 2.6.0 + http-proxy-middleware: 2.0.10(@types/express@4.17.25)(debug@4.4.3(supports-color@9.4.0)) + ipaddr.js: 2.5.0 + launch-editor: 2.14.1 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.5.0 + selfsigned: 2.4.1 + serve-index: 1.9.2(supports-color@9.4.0) + sockjs: 0.3.24 + spdy: 4.0.2(supports-color@9.4.0) + webpack-dev-middleware: 5.3.4(webpack@5.111.1) + ws: 8.21.3 + optionalDependencies: + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.111.1) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-manifest-plugin@4.1.1(webpack@5.111.1): + dependencies: + tapable: 2.3.3 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + webpack-sources: 2.3.1 + + webpack-merge-and-include-globally@2.3.4(webpack@5.111.1): + dependencies: + es6-promisify: 6.1.1 + glob: 7.2.3 + rev-hash: 3.0.0 + webpack: 5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0) + + webpack-merge@5.10.0: + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + + webpack-sources@2.3.1: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@3.5.1: {} + + webpack@5.111.1(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack-cli@4.10.0): + dependencies: + '@types/estree': 1.0.9 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + browserslist: 4.29.0 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.25.1 + es-module-lexer: 2.3.2 + events: 3.3.0 + graceful-fs: 4.2.11 + mime-db: 1.54.0 + minimizer-webpack-plugin: 5.11.0(cssnano@5.1.15(postcss@8.5.28))(csso@4.2.0)(lightningcss@1.33.0)(postcss@8.5.28)(svgo@2.8.4)(webpack@5.111.1) + schema-utils: 4.5.0 + tapable: 2.3.3 + watchpack: 2.5.2 + webpack-sources: 3.5.1 + optionalDependencies: + webpack-cli: 4.10.0(webpack-dev-server@4.15.2)(webpack@5.111.1) + transitivePeerDependencies: + - '@minify-html/node' + - '@napi-rs/image' + - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso + - esbuild + - html-minifier-terser + - imagemin + - lightningcss + - postcss + - sharp + - svgo + - uglify-js + + websocket-driver@0.7.5: + dependencies: + http-parser-js: 0.5.10 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wildcard@2.0.1: {} + + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + ws@8.21.3: {} + + y18n@5.0.8: {} + + yallist@2.1.2: {} + + yallist@3.1.1: {} + + yaml@1.10.3: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000000..b9eb590212 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,40 @@ +packages: + - 'legacy' + +# @craftcms/webpack (legacy's build tool) assumes classic npm-style flat hoisting for its own +# nested loader/plugin dependencies (babel-loader, vue-loader, etc.) — it has no awareness of +# pnpm's strict per-package isolation. Without this, webpack can't resolve its own loaders +# when building the 13 src-yii2/web/assets/* bundles (which sit outside legacy/'s own +# node_modules ancestor chain). +shamefullyHoist: true + +# pnpm 10+ blocks postinstall/build scripts for dependencies by default and wants every +# candidate answered explicitly. Both of these are well-known, trusted packages needed for +# normal operation (@parcel/watcher: Vite's native file watcher; core-js: a transitive +# polyfill dependency) — matches cms's own treatment of @parcel/watcher in its own +# pnpm-workspace.yaml. +allowBuilds: + '@parcel/watcher': true + core-js: true + +# vue-template-compiler does a plain `require('vue')` at its own module top level to +# version-check itself against whatever `vue` it finds — since it doesn't declare `vue` as +# its own dependency, Node's directory walk finds the workspace ROOT's vue (3.x, for the new +# Vite pipeline) instead of legacy's own vue (2.x), and throws. Force pnpm to nest a correctly +# -scoped vue@2 directly under vue-template-compiler's own resolved location so that walk +# never needs to leave it. +packageExtensions: + vue-template-compiler@2.7.16: + dependencies: + vue: 2.7.16 + +catalogs: + # @craftcms/commerce-legacy is intentionally held on Vue 2 — it builds the + # old commerceui/etc. webpack bundles that still power the Orders edit + # screen and friends, pre-dating the move to the new Vue 3/Vite CP `Form` + # system. Keeping it in its own catalog makes the split explicit instead of + # looking like drift (mirrors cms's own pnpm-workspace.yaml, which does the + # same for its packages/craftcms-legacy). + legacy: + vue: ^2.6.14 + vue-template-compiler: ^2.6.14 diff --git a/rector.php b/rector.php index 83d0991d94..10464479f9 100644 --- a/rector.php +++ b/rector.php @@ -7,12 +7,5 @@ return RectorConfig::configure() ->withPaths([ __DIR__ . '/src', - __DIR__ . '/tests/unit', - ]) - ->withSkip([ - Rector\Php74\Rector\Closure\ClosureToArrowFunctionRector::class => [ - __DIR__ . '/src/console/controllers/GatewaysController.php', - ], - Rector\Php80\Rector\Class_\StringableForToStringRector::class, - ]) - ->withPhpSets(php80: true); + __DIR__ . '/src-yii2', + ]); diff --git a/resources/icons/light/boxes-stacked.svg b/resources/icons/light/boxes-stacked.svg new file mode 100644 index 0000000000..fa29622df9 --- /dev/null +++ b/resources/icons/light/boxes-stacked.svg @@ -0,0 +1 @@ + diff --git a/resources/icons/light/credit-card.svg b/resources/icons/light/credit-card.svg new file mode 100644 index 0000000000..70b4e74df8 --- /dev/null +++ b/resources/icons/light/credit-card.svg @@ -0,0 +1 @@ + diff --git a/resources/icons/light/envelopes.svg b/resources/icons/light/envelopes.svg new file mode 100644 index 0000000000..835ed102b1 --- /dev/null +++ b/resources/icons/light/envelopes.svg @@ -0,0 +1 @@ + diff --git a/resources/icons/light/file-pdf.svg b/resources/icons/light/file-pdf.svg new file mode 100644 index 0000000000..45e49bb509 --- /dev/null +++ b/resources/icons/light/file-pdf.svg @@ -0,0 +1 @@ + diff --git a/resources/icons/light/gear.svg b/resources/icons/light/gear.svg new file mode 100644 index 0000000000..cd2081c1ef --- /dev/null +++ b/resources/icons/light/gear.svg @@ -0,0 +1 @@ + diff --git a/resources/icons/light/receipt.svg b/resources/icons/light/receipt.svg new file mode 100644 index 0000000000..b97bb493fb --- /dev/null +++ b/resources/icons/light/receipt.svg @@ -0,0 +1 @@ + diff --git a/resources/icons/light/store.svg b/resources/icons/light/store.svg new file mode 100644 index 0000000000..72f204790f --- /dev/null +++ b/resources/icons/light/store.svg @@ -0,0 +1 @@ + diff --git a/resources/icons/light/truck-arrow-right.svg b/resources/icons/light/truck-arrow-right.svg new file mode 100644 index 0000000000..276628bf71 --- /dev/null +++ b/resources/icons/light/truck-arrow-right.svg @@ -0,0 +1 @@ + diff --git a/resources/js/cms-elements.d.ts b/resources/js/cms-elements.d.ts new file mode 100644 index 0000000000..9179b82dc1 --- /dev/null +++ b/resources/js/cms-elements.d.ts @@ -0,0 +1,115 @@ +/** + * Ambient types for `@craftcms/cp`, the element index `cms` shares + * with plugin bundles through the import map (see `cms`'s `Cp::sharedModules()` + * and `resources/js/cp-module.ts`). Hand-authored for the same reason as + * `window.d.ts`; keep in sync with `cms`'s `ElementIndexPage.vue`, + * `ElementEditor.vue`, `CpButtonLink.vue`, `ActionMenu.vue`, `common/types` and + * `useElementIndexVisits.ts`, `useAppLayout.ts`, `useCustomizeSources.ts`. + */ +declare module '@craftcms/cp' { + import type {ComputedRef, DefineComponent} from 'vue'; + + export type IndexQueryValue = + | string + | number + | boolean + | null + | undefined + | IndexQueryValue[] + | IndexQueryParams; + + export interface IndexQueryParams { + [key: string]: IndexQueryValue; + } + + export interface ElementIndexRoute { + url(query?: IndexQueryParams): string; + } + + export function appendIndexQuery( + url: string, + query: IndexQueryParams + ): string; + + export const ElementIndexPage: DefineComponent<{ + route: ElementIndexRoute; + sourceHref?: string; + filterParams?: IndexQueryParams; + customizableSources?: boolean; + }>; + + export const ElementEditor: DefineComponent<{ + saveData?: () => Record; + }>; + + export interface ActionItemLink { + type: 'link'; + href: string; + label: string; + icon?: string; + external?: boolean; + selected?: boolean; + } + + export interface ActionItemGroup { + type: 'group'; + heading?: string; + items: ActionItemLink[]; + } + + export interface ActionItemButton { + type?: 'button'; + label: string; + icon?: string; + onClick?: (event: Event) => void; + } + + export type ActionItem = ActionItemLink | ActionItemGroup | ActionItemButton; + + export interface NavItem { + label: string | null; + href: string | null; + selected: boolean; + group: boolean; + subnav: NavItem[] | false; + } + + export interface UseAppLayoutOptions { + subnav?: NavItem[]; + subnavActions?: ActionItem[]; + } + + export function useAppLayout( + options: UseAppLayoutOptions | (() => UseAppLayoutOptions) + ): void; + + export interface CustomizeSourcesTarget { + elementType?: string | null; + page?: string | null; + sourceKey?: string | null; + route?: ElementIndexRoute | null; + sourceHref?: string | null; + } + + export function useCustomizeSources( + target: () => CustomizeSourcesTarget + ): ComputedRef; + + export const ActionMenu: DefineComponent<{ + actions: ActionItem[]; + icon?: string; + label?: string | null; + buttonVariant?: string; + searchable?: boolean; + flush?: boolean | string; + }>; + + export const CpButtonLink: DefineComponent<{ + href: string; + variant?: string; + size?: 'zero' | 'small' | 'medium' | 'large'; + icon?: string; + target?: string; + inertia?: boolean; + }>; +} diff --git a/resources/js/cp.ts b/resources/js/cp.ts new file mode 100644 index 0000000000..2fb6677747 --- /dev/null +++ b/resources/js/cp.ts @@ -0,0 +1,72 @@ +import CouponGeneratorNode from './modules/ui/CouponGeneratorNode.vue'; +import SiteStoresControl from './modules/ui/SiteStoresControl.vue'; +import TransferDetailsControl from './modules/ui/TransferDetailsControl.vue'; +import TransferReceiveControl from './modules/ui/TransferReceiveControl.vue'; +import UsageCounterNode from './modules/ui/UsageCounterNode.vue'; + +/** + * Commerce's own contribution to the shared CP `Ui` system's component + * registry. `window.Cp` is a deliberate public bridge `cms` exposes for + * exactly this (see `cms/resources/js/bootstrap/cp.ts`'s `window.Cp = Cp;`). + * + * On genuine Inertia pages (`app.blade.php`), `cms`'s own bundle is + * guaranteed to run first — `Cp::viteScripts()` renders before + * `Plugins::getAssetsHtml()` (which is what enqueues this script, via + * `CraftCms\Commerce\Plugin::$vite` + `HasFrontendAssets`). That ordering + * guarantee does *not* hold on legacy-compat-rendered pages (still-Yii2- + * template screens like Orders, not yet converted to the new Ui system) — + * their own asset registration can enqueue this script *before* `cms`'s, + * confirmed live (script tag order swapped on `commerce/orders`, throwing + * `Cannot read properties of undefined (reading '$components')`). Rather + * than depend on load order at all, wait for `window.Cp` to actually exist. + * + * Component names are prefixed `commerce:` (rather than reusing `cms`'s own + * `craft:` prefix) so a Commerce-contributed type can never collide with a + * future `cms`-native one of a similar name. + */ +function registerComponents(): void { + window.Cp.$components.register( + 'commerce:coupon-generator', + CouponGeneratorNode + ); + window.Cp.$components.register('commerce:usage-counter', UsageCounterNode); + window.Cp.$components.register('commerce:site-stores', SiteStoresControl); + window.Cp.$components.register( + 'commerce:transfer-details', + TransferDetailsControl + ); + window.Cp.$components.register( + 'commerce:transfer-receive', + TransferReceiveControl + ); + + // Loaded on demand, so the element index `cms` shares through the import + // map is only fetched on the pages that use it. + window.Cp.$inertia.register( + 'commerce::products/Index', + () => import('./pages/products/Index.vue') + ); + window.Cp.$inertia.register( + 'commerce::variants/Index', + () => import('./pages/variants/Index.vue') + ); + window.Cp.$inertia.register( + 'commerce::orders/Index', + () => import('./pages/orders/Index.vue') + ); + window.Cp.$inertia.register( + 'commerce::inventory/transfers/Index', + () => import('./pages/inventory/transfers/Index.vue') + ); +} + +if (window.Cp) { + registerComponents(); +} else { + const id = setInterval(() => { + if (window.Cp) { + clearInterval(id); + registerComponents(); + } + }, 10); +} diff --git a/resources/js/modules/elements/NewProductButton.vue b/resources/js/modules/elements/NewProductButton.vue new file mode 100644 index 0000000000..b000d91c8c --- /dev/null +++ b/resources/js/modules/elements/NewProductButton.vue @@ -0,0 +1,112 @@ + + + diff --git a/resources/js/modules/orders/DownloadOrderPdfPopover.vue b/resources/js/modules/orders/DownloadOrderPdfPopover.vue new file mode 100644 index 0000000000..1cf01b6f7d --- /dev/null +++ b/resources/js/modules/orders/DownloadOrderPdfPopover.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/resources/js/modules/orders/OrderDateRangeMenu.vue b/resources/js/modules/orders/OrderDateRangeMenu.vue new file mode 100644 index 0000000000..3482422ab1 --- /dev/null +++ b/resources/js/modules/orders/OrderDateRangeMenu.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/resources/js/modules/orders/UpdateOrderStatusDialog.vue b/resources/js/modules/orders/UpdateOrderStatusDialog.vue new file mode 100644 index 0000000000..2723870fb0 --- /dev/null +++ b/resources/js/modules/orders/UpdateOrderStatusDialog.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/resources/js/modules/orders/order-actions.ts b/resources/js/modules/orders/order-actions.ts new file mode 100644 index 0000000000..c0ddd55580 --- /dev/null +++ b/resources/js/modules/orders/order-actions.ts @@ -0,0 +1,177 @@ +/** + * The detail of the window events `OrderIndexViewModel::actions()` swaps the + * order actions that need a settings step for. The bulk actions bar adds the + * selection; `url` and `body` are the request the action would have made. + */ +export interface OrderActionEventDetail { + url: string; + body: Record; + elementType: string; + elementIds: Array; + trigger?: Element; +} + +type RequestFailure = { + response?: {data?: unknown}; + message?: string; +}; + +export function showMessage(type: 'success' | 'error', message: string): void { + window.dispatchEvent( + new CustomEvent('craft-message', {detail: {type, message}}) + ); +} + +async function failureMessage(failure: unknown): Promise { + const data = (failure as RequestFailure).response?.data; + const payload = + data instanceof Blob ? await data.text().then(parseJson) : data; + + return ( + (payload as {message?: string} | null)?.message ?? + (failure as RequestFailure).message ?? + null + ); +} + +function parseJson(text: string): unknown { + try { + return JSON.parse(text); + } catch { + return null; + } +} + +function requestData( + detail: OrderActionEventDetail, + settings: Record +): Record { + return { + ...detail.body, + ...settings, + elementType: detail.elementType, + elementIds: detail.elementIds, + }; +} + +/** + * Performs the order action with the settings picked for it, reporting the + * outcome. Resolves to whether it succeeded. + */ +export async function performOrderAction( + detail: OrderActionEventDetail, + settings: Record +): Promise { + try { + const {data} = await window.Craft.sendActionRequest<{message?: string}>( + 'POST', + detail.url, + {data: requestData(detail, settings)} + ); + + if (data.message) { + showMessage('success', data.message); + } + + return true; + } catch (failure) { + const message = await failureMessage(failure); + + if (message) { + showMessage('error', message); + } + + return false; + } +} + +/** + * Performs a download order action and saves the file it responds with. + */ +export async function downloadOrderAction( + detail: OrderActionEventDetail, + settings: Record +): Promise { + try { + const response = await window.Craft.sendActionRequest( + 'POST', + detail.url, + {data: requestData(detail, settings), responseType: 'blob'} + ); + + saveBlob( + response.data, + filenameFrom(response.headers['content-disposition']) ?? 'download' + ); + + return true; + } catch (failure) { + const message = await failureMessage(failure); + + if (message) { + showMessage('error', message); + } + + return false; + } +} + +function filenameFrom(disposition: string | undefined): string | null { + if (!disposition) { + return null; + } + + const encoded = /filename\*=UTF-8''([^;]+)/i.exec(disposition)?.[1]; + + if (encoded) { + return decodeURIComponent(encoded); + } + + return /filename="?([^";]+)"?/i.exec(disposition)?.[1] ?? null; +} + +function saveBlob(blob: Blob, filename: string): void { + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = filename; + document.body.append(link); + link.click(); + link.remove(); + URL.revokeObjectURL(url); +} + +/** Mirrors the `OrderIndexViewModel::*_EVENT` constants. */ +export const UPDATE_ORDER_STATUS_EVENT = 'commerce:update-order-status'; +export const COPY_LOAD_CART_URL_EVENT = 'commerce:copy-load-cart-url'; +export const DOWNLOAD_ORDER_PDF_EVENT = 'commerce:download-order-pdf'; + +/** + * Shows the selected cart's load-cart URL in the CP's copy text prompt. + */ +export async function promptLoadCartUrl( + detail: OrderActionEventDetail, + label: string +): Promise { + try { + const {data} = await window.Craft.sendActionRequest<{url?: string}>( + 'GET', + 'commerce/orders/get-load-cart-url', + {params: {id: detail.elementIds[0]}} + ); + + if (data.url) { + window.dispatchEvent( + new CustomEvent('craft:copy-text-prompt', { + detail: {label, value: data.url}, + }) + ); + } + } catch (failure) { + const message = await failureMessage(failure); + + if (message) { + showMessage('error', message); + } + } +} diff --git a/resources/js/modules/ui/CouponGeneratorNode.vue b/resources/js/modules/ui/CouponGeneratorNode.vue new file mode 100644 index 0000000000..7fc3fc6bbf --- /dev/null +++ b/resources/js/modules/ui/CouponGeneratorNode.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/resources/js/modules/ui/SiteStoresControl.vue b/resources/js/modules/ui/SiteStoresControl.vue new file mode 100644 index 0000000000..52fd95b5c2 --- /dev/null +++ b/resources/js/modules/ui/SiteStoresControl.vue @@ -0,0 +1,53 @@ + + + diff --git a/resources/js/modules/ui/TransferDetailsControl.vue b/resources/js/modules/ui/TransferDetailsControl.vue new file mode 100644 index 0000000000..97c24a240e --- /dev/null +++ b/resources/js/modules/ui/TransferDetailsControl.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/resources/js/modules/ui/TransferReceiveControl.vue b/resources/js/modules/ui/TransferReceiveControl.vue new file mode 100644 index 0000000000..6d37f035c7 --- /dev/null +++ b/resources/js/modules/ui/TransferReceiveControl.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/resources/js/modules/ui/UsageCounterNode.vue b/resources/js/modules/ui/UsageCounterNode.vue new file mode 100644 index 0000000000..cebec5fc96 --- /dev/null +++ b/resources/js/modules/ui/UsageCounterNode.vue @@ -0,0 +1,67 @@ + + + diff --git a/resources/js/pages/inventory/transfers/Index.vue b/resources/js/pages/inventory/transfers/Index.vue new file mode 100644 index 0000000000..6deb815bd4 --- /dev/null +++ b/resources/js/pages/inventory/transfers/Index.vue @@ -0,0 +1,63 @@ + + + diff --git a/resources/js/pages/orders/Index.vue b/resources/js/pages/orders/Index.vue new file mode 100644 index 0000000000..c72d6b9350 --- /dev/null +++ b/resources/js/pages/orders/Index.vue @@ -0,0 +1,230 @@ + + + diff --git a/resources/js/pages/products/Index.vue b/resources/js/pages/products/Index.vue new file mode 100644 index 0000000000..07de46a17c --- /dev/null +++ b/resources/js/pages/products/Index.vue @@ -0,0 +1,77 @@ + + + diff --git a/resources/js/pages/variants/Index.vue b/resources/js/pages/variants/Index.vue new file mode 100644 index 0000000000..d3d467265b --- /dev/null +++ b/resources/js/pages/variants/Index.vue @@ -0,0 +1,35 @@ + + + diff --git a/resources/js/window.d.ts b/resources/js/window.d.ts new file mode 100644 index 0000000000..478e0cae47 --- /dev/null +++ b/resources/js/window.d.ts @@ -0,0 +1,61 @@ +/** + * Ambient types for the slice of `cms`'s public `window.Cp`/`window.Craft` + * globals this bundle actually uses. Hand-authored, not imported from `cms` — + * `cms`'s own TS source (`resources/js/**`) is private to that package, not a + * published dependency this project can resolve. Keep this in sync by hand if + * the real shape changes; see `cms/resources/js/bootstrap/cp.ts` (`Cp`) and + * `cms/resources/js/common/types/globals.d.ts` (`Craft`) for the source of + * truth. + */ + +interface CpComponentRegistration { + // A plain Vue component, or (matching `cms`'s own registry) an async loader + // returning one — only the plain-component shape is used here. + [key: string]: unknown; +} + +interface CpComponentRegistry { + register(name: string, component: CpComponentRegistration): void; +} + +interface InertiaPageRegistry { + // A page component, or a loader resolving to one (or its module). + register(name: string, componentOrLoader: unknown): void; +} + +interface InertiaRouter { + reload(options?: {only?: string[]}): void; + visit( + url: string, + options?: {preserveState?: boolean; preserveScroll?: boolean} + ): void; +} + +declare global { + interface Window { + Cp: { + $components: CpComponentRegistry; + $inertia: InertiaPageRegistry; + $router: InertiaRouter; + }; + Craft: { + t( + category: string, + message: string, + params?: Record + ): string; + sendActionRequest( + method: string, + action: string, + options?: { + data?: Record; + params?: Record; + responseType?: 'json' | 'blob' | 'text'; + } + ): Promise<{data: T; headers: Record}>; + csrfTokenValue?: string; + }; + } +} + +export {}; diff --git a/routes/actions.php b/routes/actions.php new file mode 100644 index 0000000000..f3ba90f34c --- /dev/null +++ b/routes/actions.php @@ -0,0 +1,297 @@ +group(function () { + Route::get('cart/show', [CartController::class, 'show']); + Route::post('cart/update', [CartController::class, 'update']); + Route::match(['get', 'post'], 'cart/load', [CartController::class, 'load']); + Route::post('cart/complete', [CartController::class, 'complete']); + + // @deprecated in 6.0.0. Use `commerce/cart/show` instead. + Route::get('cart/get-cart', [CartController::class, 'show']) + ->middleware(LogDeprecatedAction::replacedBy('commerce/cart/get-cart', 'commerce/cart/show')); + // @deprecated in 6.0.0. Use `commerce/cart/update` instead. + Route::post('cart/update-cart', [CartController::class, 'update']) + ->middleware(LogDeprecatedAction::replacedBy('commerce/cart/update-cart', 'commerce/cart/update')); + // @deprecated in 6.0.0. Use `commerce/cart/load` instead. + Route::match(['get', 'post'], 'cart/load-cart', [CartController::class, 'load']) + ->middleware(LogDeprecatedAction::replacedBy('commerce/cart/load-cart', 'commerce/cart/load')); +}); + +Route::post('cart/forget', [CartController::class, 'forget']); +// @deprecated in 6.0.0. Use `commerce/cart/forget` instead. +Route::post('cart/forget-cart', [CartController::class, 'forget']) + ->middleware(LogDeprecatedAction::replacedBy('commerce/cart/forget-cart', 'commerce/cart/forget')); +Route::get('cart/email-challenge', [CartController::class, 'emailChallenge']); +Route::post('cart/cart-challenge', [CartController::class, 'cartChallenge']) + ->middleware('throttle:' . CartChallengeRateLimiter::NAME); +Route::get('cart/cart-sent', [CartController::class, 'cartSent']); + +// Anonymous by design — guest checkout must be able to pay. Each action gates its own +// order/customer-ownership checks inline (mirrors CartController's own permission model). +Route::post('payments/pay', [PaymentsController::class, 'pay']); +Route::match(['get', 'post'], 'payments/complete-payment', [PaymentsController::class, 'complete']); + +Route::post('payment-sources/add', [PaymentSourcesController::class, 'store']); +Route::post('payment-sources/set-primary-payment-source', [PaymentSourcesController::class, 'setPrimary']); +Route::post('payment-sources/delete', [PaymentSourcesController::class, 'destroy']); + +// These are also reachable, unauthenticated, at their site-side action URL (per +// CraftCms\Cms\Plugin\Concerns\HasRoutes::registerActionRoutes()) — the `auth`/`can` +// middleware below is what actually protects them, not the URL prefix. +Route::middleware(['auth', 'can:accessPlugin-commerce', 'can:commerce-manageDonationSettings'])->group(function () { + Route::post('donations/save', [DonationsController::class, 'store']); + Route::post('donations/render-ui', [DonationsController::class, 'renderUi']); +}); + +Route::middleware(['auth', 'can:accessPlugin-commerce', RequireAdmin::class])->group(function () { + Route::post('gateways/save', [GatewaysController::class, 'store']); + Route::match(['post', 'delete'], 'gateways/archive', [GatewaysController::class, 'archive']); + Route::post('gateways/reorder', [GatewaysController::class, 'reorder']); + + Route::post('settings/save-settings', [GeneralSettingsController::class, 'store']); + Route::post('settings/save-transfer-settings', [TransferSettingsController::class, 'store']); + Route::post('order-settings/save', [OrderSettingsController::class, 'store']); + + Route::post('stores/save-store', [StoresController::class, 'store']); + Route::match(['post', 'delete'], 'stores/delete-store', [StoresController::class, 'destroy']); + Route::post('stores/reorder-stores', [StoresController::class, 'reorder']); + Route::post('stores/save-site-stores', [StoresController::class, 'saveSiteStores']); + + Route::post('order-statuses/save', [OrderStatusesController::class, 'store']); + Route::match(['get', 'post'], 'order-statuses/get-order-statuses', [OrderStatusesController::class, 'list']); + Route::post('order-statuses/reorder', [OrderStatusesController::class, 'reorder']); + Route::match(['post', 'delete'], 'order-statuses/delete', [OrderStatusesController::class, 'destroy']); + + Route::post('line-item-statuses/save', [LineItemStatusesController::class, 'store']); + Route::post('line-item-statuses/reorder', [LineItemStatusesController::class, 'reorder']); + Route::match(['post', 'delete'], 'line-item-statuses/archive', [LineItemStatusesController::class, 'archive']); + + Route::post('product-types/save-product-type', [ProductTypesController::class, 'store']); + Route::match(['post', 'delete'], 'product-types/delete-product-type', [ProductTypesController::class, 'destroy']); +}); + +// BaseStoreManagementController::init() always required commerce-manageStoreSettings, on top of +// whichever more specific permission each feature area's own controller adds — every route in +// this group must check both, matching that legacy compound check exactly. +Route::middleware(['auth', 'can:accessPlugin-commerce', 'can:commerce-manageStoreSettings'])->group(function () { + Route::post('store-management/save', [StoreManagementController::class, 'store']); + Route::post('store-management/render-ui', [StoreManagementController::class, 'renderUi']); + + Route::middleware('can:commerce-managePaymentCurrencies')->group(function () { + Route::post('payment-currencies/save', [PaymentCurrenciesController::class, 'store']); + Route::match(['post', 'delete'], 'payment-currencies/delete', [PaymentCurrenciesController::class, 'destroy']); + }); + + Route::middleware('can:commerce-manageShipping')->group(function () { + Route::post('shipping-zones/save', [ShippingZonesController::class, 'store']); + Route::match(['post', 'delete'], 'shipping-zones/delete', [ShippingZonesController::class, 'destroy']); + Route::post('shipping-zones/test-zip', [ShippingZonesController::class, 'testZip']); + + Route::post('shipping-methods/save', [ShippingMethodsController::class, 'store']); + Route::match(['post', 'delete'], 'shipping-methods/delete', [ShippingMethodsController::class, 'destroy']); + Route::post('shipping-methods/update-status', [ShippingMethodsController::class, 'updateStatus']); + + Route::post('shipping-rules/save', [ShippingRulesController::class, 'store']); + Route::post('shipping-rules/duplicate', [ShippingRulesController::class, 'duplicate']); + Route::post('shipping-rules/reorder', [ShippingRulesController::class, 'reorder']); + Route::match(['post', 'delete'], 'shipping-rules/delete', [ShippingRulesController::class, 'destroy']); + Route::post('shipping-rules/render-ui', [ShippingRulesController::class, 'renderUi']); + + Route::post('shipping-categories/save', [ShippingCategoriesController::class, 'store']); + Route::match(['post', 'delete'], 'shipping-categories/delete', [ShippingCategoriesController::class, 'destroy']); + Route::post('shipping-categories/set-default-category', [ShippingCategoriesController::class, 'setDefault']); + Route::post('shipping-categories/render-ui', [ShippingCategoriesController::class, 'renderUi']); + }); + + Route::middleware('can:commerce-manageTaxes')->group(function () { + Route::post('tax-zones/save', [TaxZonesController::class, 'store']); + Route::match(['post', 'delete'], 'tax-zones/delete', [TaxZonesController::class, 'destroy']); + Route::post('tax-zones/test-zip', [TaxZonesController::class, 'testZip']); + + Route::post('tax-categories/save', [TaxCategoriesController::class, 'store']); + Route::match(['post', 'delete'], 'tax-categories/delete', [TaxCategoriesController::class, 'destroy']); + Route::post('tax-categories/set-default-category', [TaxCategoriesController::class, 'setDefault']); + + Route::post('tax-rates/save', [TaxRatesController::class, 'store']); + Route::match(['post', 'delete'], 'tax-rates/delete', [TaxRatesController::class, 'destroy']); + Route::post('tax-rates/update-status', [TaxRatesController::class, 'updateStatus']); + Route::post('tax-rates/render-ui', [TaxRatesController::class, 'renderUi']); + }); + + Route::middleware('can:commerce-managePromotions')->group(function () { + Route::post('sales/save', [SalesController::class, 'store']); + Route::post('sales/reorder', [SalesController::class, 'reorder']); + Route::post('sales/delete', [SalesController::class, 'destroy']); + Route::match(['get', 'post'], 'sales/get-all-sales', [SalesController::class, 'list']); + Route::post('sales/get-sales-by-product-id', [SalesController::class, 'byProduct']); + Route::post('sales/get-sales-by-purchasable-id', [SalesController::class, 'byPurchasable']); + Route::post('sales/add-purchasable-to-sale', [SalesController::class, 'addPurchasable']); + Route::post('sales/update-status', [SalesController::class, 'updateStatus']); + + Route::post('discounts/save', [DiscountsController::class, 'store']); + Route::post('discounts/render-ui', [DiscountsController::class, 'renderUi']); + Route::post('discounts/reorder', [DiscountsController::class, 'reorder']); + Route::post('discounts/table-data', [DiscountsController::class, 'tableData']); + Route::post('discounts/move-to-page', [DiscountsController::class, 'moveToPage']); + Route::match(['post', 'delete'], 'discounts/delete', [DiscountsController::class, 'destroy']); + Route::post('discounts/clear-discount-uses', [DiscountsController::class, 'clearUses']); + Route::post('discounts/update-status', [DiscountsController::class, 'updateStatus']); + Route::post('discounts/get-discounts-by-purchasable-id', [DiscountsController::class, 'byPurchasable']); + Route::post('discounts/generate-coupons', [DiscountsController::class, 'generateCoupons']); + + Route::post('catalog-pricing-rules/save', [CatalogPricingRulesController::class, 'store']); + Route::post('catalog-pricing-rules/render-ui', [CatalogPricingRulesController::class, 'renderUi']); + Route::post('catalog-pricing-rules/table-data', [CatalogPricingRulesController::class, 'tableData']); + Route::match(['post', 'delete'], 'catalog-pricing-rules/delete', [CatalogPricingRulesController::class, 'destroy']); + Route::post('catalog-pricing-rules/update-status', [CatalogPricingRulesController::class, 'updateStatus']); + + Route::post('catalog-pricing/filter', [CatalogPricingController::class, 'filter']); + Route::post('catalog-pricing/prices', [CatalogPricingController::class, 'prices']); + Route::get('catalog-pricing/queue-status', [CatalogPricingController::class, 'queueStatus']); + Route::post('catalog-pricing/get-catalog-prices', [CatalogPricingController::class, 'catalogPrices']); + }); +}); + +// OrdersController extends the plain Yii2 Controller (not BaseCpController) — its init() only +// ever checked commerce-manageOrders, not accessPlugin-commerce. +Route::middleware(['auth', 'can:commerce-manageOrders'])->group(function () { + Route::post('orders/fulfill', [OrdersController::class, 'fulfill']); + Route::get('orders/fulfillment-modal', [OrdersController::class, 'fulfillmentModal']); + Route::post('orders/save', [OrdersController::class, 'store']); + Route::post('orders/delete-order', [OrdersController::class, 'destroy']); + Route::post('orders/refresh', [OrdersController::class, 'refresh']); + Route::post('orders/get-shipping-method-options', [OrdersController::class, 'shippingMethodOptions']); + Route::get('orders/user-orders-table', [OrdersController::class, 'userOrdersTable']); + Route::get('orders/purchasables-table', [OrdersController::class, 'purchasablesTable']); + Route::get('orders/customer-search', [OrdersController::class, 'customerSearch']); + Route::get('orders/get-customer-addresses', [OrdersController::class, 'customerAddresses']); + Route::get('orders/get-order-address', [OrdersController::class, 'orderAddress']); + Route::post('orders/validate-address', [OrdersController::class, 'validateAddress']); + Route::post('orders/create-customer', [OrdersController::class, 'createCustomer']); + Route::get('orders/get-load-cart-url', [OrdersController::class, 'loadCartUrl']); + Route::get('orders/send-email', [OrdersController::class, 'sendEmail']); + Route::get('orders/update-order-address', [OrdersController::class, 'updateOrderAddress']); + Route::get('orders/get-index-sources-badge-counts', [OrdersController::class, 'indexSourcesBadgeCounts']); + Route::get('orders/get-payment-modal', [OrdersController::class, 'paymentModal']); + Route::post('orders/payment-amount-data', [OrdersController::class, 'paymentAmountData']); + + Route::post('orders/copy-address-to-user', [OrdersController::class, 'copyAddressToUser']) + ->middleware('can:editUsers'); + + Route::middleware('can:commerce-capturePayment') + ->post('orders/transaction-capture', [OrdersController::class, 'transactionCapture']); + Route::middleware('can:commerce-refundPayment') + ->post('orders/transaction-refund', [OrdersController::class, 'transactionRefund']); + + Route::middleware([RequireCpRequest::class, 'can:deleteUsers'])->group(function () { + Route::get('orders/reassign-modal', [OrdersController::class, 'reassignModal']); + Route::post('orders/reassign', [OrdersController::class, 'reassign']); + Route::get('orders/remove-customer-data-modal', [OrdersController::class, 'removeCustomerDataModal']); + Route::post('orders/remove-customer-data', [OrdersController::class, 'removeCustomerData']); + }); +}); + +// InventoryController checks commerce-manageInventoryStockLevels inline on every action +// (not via init()) — replicated here as a route-group-wide permission instead. +Route::middleware(['auth', 'can:commerce-manageInventoryStockLevels'])->group(function () { + Route::post('inventory/item-save', [InventoryController::class, 'storeItem']); + Route::post('inventory/inventory-levels-table-data', [InventoryController::class, 'tableData']); + Route::get('inventory/prepare-update-levels-modal', [InventoryController::class, 'prepareUpdateLevelsModal']); + Route::post('inventory/update-levels', [InventoryController::class, 'updateLevels']); + Route::get('inventory/prepare-movement-modal', [InventoryController::class, 'prepareMovementModal']); + Route::post('inventory/save-inventory-movement', [InventoryController::class, 'storeMovement']); +}); + +Route::middleware(['auth', 'can:commerce-manageInventoryLocations'])->group(function () { + Route::post('inventory-locations/save', [InventoryLocationsController::class, 'store']); + Route::post('inventory-locations/render-ui', [InventoryLocationsController::class, 'renderUi']); + Route::get('inventory-locations/prepare-delete-modal', [InventoryLocationsController::class, 'prepareDeleteModal']); + Route::match(['post', 'delete'], 'inventory-locations/deactivate', [InventoryLocationsController::class, 'deactivate']); +}); + +Route::middleware(['auth', 'can:commerce-manageInventoryTransfers'])->group(function () { + Route::get('transfers/create', [TransfersController::class, 'create']); + Route::post('transfers/mark-as-pending', [TransfersController::class, 'markAsPending']); + Route::post('transfers/receive-transfer', [TransfersController::class, 'receive']); + Route::get('transfers/prepare-receive-modal', [TransfersController::class, 'prepareReceiveModal']); +}); + +Route::middleware(['auth', 'can:accessPlugin-commerce', RequireAdmin::class])->group(function () { + Route::post('emails/save', [EmailsController::class, 'store']); + Route::match(['post', 'delete'], 'emails/delete', [EmailsController::class, 'destroy']); + + Route::post('pdfs/save', [PdfsController::class, 'store']); + Route::match(['post', 'delete'], 'pdfs/delete', [PdfsController::class, 'destroy']); + Route::post('pdfs/reorder', [PdfsController::class, 'reorder']); +}); + +Route::middleware(['auth', 'can:accessPlugin-commerce'])->group(function () { + Route::post('formulas/validate-condition', [FormulasController::class, 'validateCondition']); + Route::post('formulas/validate-formula', [FormulasController::class, 'validateFormula']); + + Route::post('products/create', CreateProductController::class); +}); + +// Rendered inside an iframe from the email edit screen's preview button — admin-only, matching +// the legacy controller's plain `requireAdmin(false)` (it never extended a Commerce base +// controller, so there was never an accessPlugin-commerce check here either). +Route::middleware(RequireAdmin::class)->get('email-preview/render', [EmailPreviewController::class, 'render']); + +// Anonymous by design — customers download/request order PDFs without being logged in. +// pdf-challenge is rate-limited (not auth-gated) to blunt brute-forcing of order numbers/hashes. +Route::get('downloads/pdf', [DownloadsController::class, 'pdf']); +Route::get('downloads/email-challenge', [DownloadsController::class, 'emailChallenge']); +Route::post('downloads/pdf-challenge', [DownloadsController::class, 'pdfChallenge']) + ->middleware('throttle:' . PdfChallengeRateLimiter::NAME); +Route::get('downloads/pdf-sent', [DownloadsController::class, 'pdfSent']); diff --git a/routes/cp.php b/routes/cp.php new file mode 100644 index 0000000000..943d427e41 --- /dev/null +++ b/routes/cp.php @@ -0,0 +1,215 @@ +group(function () { + Route::middleware('can:commerce-manageDonationSettings') + ->get('commerce/donations', [DonationsController::class, 'edit']); + + Route::middleware(RequireAdmin::class)->group(function () { + Route::get('commerce/settings', fn() => redirect(cp_url('commerce/settings/general'))); + + Route::get('commerce/settings/gateways', [GatewaysController::class, 'index']); + Route::get('commerce/settings/gateways/new', [GatewaysController::class, 'create']); + Route::post('commerce/settings/gateways/render-ui', [GatewaysController::class, 'renderUi']); + Route::get('commerce/settings/gateways/{id}', [GatewaysController::class, 'edit'])->whereNumber('id'); + + Route::get('commerce/settings/general', [GeneralSettingsController::class, 'edit']); + Route::get('commerce/settings/orders', fn() => redirect(cp_url('commerce/settings/orders/fields'))); + Route::get('commerce/settings/orders/fields', [OrderSettingsController::class, 'edit']); + Route::get('commerce/settings/transfers', [TransferSettingsController::class, 'edit']); + + Route::get('commerce/settings/stores', [StoresController::class, 'index']); + Route::get('commerce/settings/stores/new', [StoresController::class, 'create']); + Route::get('commerce/settings/stores/{storeId}', [StoresController::class, 'edit'])->whereNumber('storeId'); + Route::get('commerce/settings/stores/sites', [StoresController::class, 'editSiteStores']); + + Route::get('commerce/settings/orders/statuses', [OrderStatusesController::class, 'index']); + Route::get('commerce/settings/orders/statuses/{storeHandle}/new', [OrderStatusesController::class, 'create']); + Route::get('commerce/settings/orders/statuses/{storeHandle}/{id}', [OrderStatusesController::class, 'edit'])->whereNumber('id'); + + Route::get('commerce/settings/orders/line-item-statuses', [LineItemStatusesController::class, 'index']); + Route::get('commerce/settings/orders/line-item-statuses/{storeHandle}/new', [LineItemStatusesController::class, 'create']); + Route::get('commerce/settings/orders/line-item-statuses/{storeHandle}/{id}', [LineItemStatusesController::class, 'edit'])->whereNumber('id'); + + Route::get('commerce/settings/producttypes', [ProductTypesController::class, 'index']); + Route::get('commerce/settings/producttypes/new', [ProductTypesController::class, 'create']); + Route::post('commerce/settings/producttypes/render-ui', [ProductTypesController::class, 'renderUi']); + Route::get('commerce/settings/producttypes/{productTypeId}', [ProductTypesController::class, 'edit'])->whereNumber('productTypeId'); + + Route::get('commerce/settings/emails/{storeHandle?}', [EmailsController::class, 'index']); + Route::get('commerce/settings/emails/{storeHandle}/new', [EmailsController::class, 'create']); + Route::post('commerce/settings/emails/render-ui', [EmailsController::class, 'renderUi']); + Route::get('commerce/settings/emails/{storeHandle}/{id}', [EmailsController::class, 'edit'])->whereNumber('id'); + + Route::get('commerce/settings/pdfs/{storeHandle?}', [PdfsController::class, 'index']); + Route::get('commerce/settings/pdfs/{storeHandle}/new', [PdfsController::class, 'create']); + Route::get('commerce/settings/pdfs/{storeHandle}/{id}', [PdfsController::class, 'edit'])->whereNumber('id'); + }); + + // No extra permission middleware: CreateProductController authorizes the new product through ProductPolicy, and + // ProductsController checks for a viewable product type itself. + Route::get('commerce/products/{productType}/new', CreateProductController::class); + + // Product/transfer edit screens just resolve the element by {id} — the + // productTypeHandle segment is cosmetic (matches legacy: the old `elements/edit` route + // never checked it against the element either). No extra permission middleware here, + // matching the legacy UrlManager rules — access is enforced by the element's policy + // (ProductPolicy) or its own canView()/canSave() (Transfer::canView()). + $idSlugParams = [ + 'id' => '\d+', + 'slug' => '(?:-[^\/]*)', + ]; + Route::get('commerce/products/{productTypeHandle}/{id}{slug}/revisions', [ElementRevisionsController::class, 'index'])->where($idSlugParams); + Route::get('commerce/products/{productTypeHandle}/{id}{slug?}', EditElementController::class)->where($idSlugParams); + Route::get('commerce/variants/{id}{slug?}', EditElementController::class)->where($idSlugParams); + Route::get('commerce/inventory/transfers/{id}{slug?}', EditElementController::class)->where($idSlugParams); + + Route::get('commerce/products/{productTypeHandle?}', [ProductsController::class, 'index']); + Route::get('commerce/variants/{productTypeHandle?}', [VariantsController::class, 'index']); + + // BaseStoreManagementController::init() always required commerce-manageStoreSettings, on + // top of whichever more specific permission each feature area's own controller adds — every + // route in this group must check both, matching that legacy compound check exactly. + Route::middleware('can:commerce-manageStoreSettings')->group(function () { + Route::get('commerce/store-management', [StoreManagementController::class, 'index']); + Route::get('commerce/store-management/{storeHandle}', [StoreManagementController::class, 'edit']); + + Route::middleware('can:commerce-manageShipping') + ->prefix('commerce/store-management/{storeHandle}') + ->group(function () { + Route::get('shippingzones', [ShippingZonesController::class, 'index']); + Route::get('shippingzones/new', [ShippingZonesController::class, 'create']); + Route::get('shippingzones/{id}', [ShippingZonesController::class, 'edit'])->whereNumber('id'); + + Route::get('shippingcategories', [ShippingCategoriesController::class, 'index']); + Route::get('shippingcategories/new', [ShippingCategoriesController::class, 'create']); + Route::get('shippingcategories/{id}', [ShippingCategoriesController::class, 'edit'])->whereNumber('id'); + + Route::get('shippingmethods', [ShippingMethodsController::class, 'index']); + Route::get('shippingmethods/new', [ShippingMethodsController::class, 'create']); + Route::get('shippingmethods/{id}', [ShippingMethodsController::class, 'edit'])->whereNumber('id'); + Route::get('shippingmethods/{methodId}/shippingrules/new', [ShippingRulesController::class, 'create'])->whereNumber('methodId'); + Route::get('shippingmethods/{methodId}/shippingrules/{ruleId}', [ShippingRulesController::class, 'edit'])->whereNumber(['methodId', 'ruleId']); + }); + + Route::middleware('can:commerce-manageTaxes') + ->prefix('commerce/store-management/{storeHandle}') + ->group(function () { + Route::get('taxcategories', [TaxCategoriesController::class, 'index']); + Route::get('taxcategories/new', [TaxCategoriesController::class, 'create']); + Route::get('taxcategories/{id}', [TaxCategoriesController::class, 'edit'])->whereNumber('id'); + + Route::get('taxzones', [TaxZonesController::class, 'index']); + Route::get('taxzones/new', [TaxZonesController::class, 'create']); + Route::get('taxzones/{id}', [TaxZonesController::class, 'edit'])->whereNumber('id'); + + Route::get('taxrates', [TaxRatesController::class, 'index']); + Route::get('taxrates/new', [TaxRatesController::class, 'create']); + Route::get('taxrates/{id}', [TaxRatesController::class, 'edit'])->whereNumber('id'); + }); + + Route::middleware('can:commerce-managePromotions')->group(function () { + Route::get('commerce/catalog-pricing', [CatalogPricingController::class, 'index']); + + Route::prefix('commerce/store-management/{storeHandle}')->group(function () { + Route::get('sales', [SalesController::class, 'index']); + Route::get('sales/new', [SalesController::class, 'create']); + Route::get('sales/{id}', [SalesController::class, 'edit'])->whereNumber('id'); + + Route::get('discounts', [DiscountsController::class, 'index']); + Route::get('discounts/new', [DiscountsController::class, 'create']); + Route::get('discounts/{id}', [DiscountsController::class, 'edit'])->whereNumber('id'); + + Route::get('pricing-rules', [CatalogPricingRulesController::class, 'index']); + Route::get('pricing-rules/new', [CatalogPricingRulesController::class, 'create']); + Route::get('pricing-rules/{id}', [CatalogPricingRulesController::class, 'edit'])->whereNumber('id'); + }); + }); + + Route::middleware('can:commerce-managePaymentCurrencies') + ->prefix('commerce/store-management/{storeHandle}') + ->group(function () { + Route::get('payment-currencies', [PaymentCurrenciesController::class, 'index']); + Route::get('payment-currencies/new', [PaymentCurrenciesController::class, 'create']); + Route::get('payment-currencies/{id}', [PaymentCurrenciesController::class, 'edit'])->whereNumber('id'); + }); + }); + + // PromotionsController extends BaseCpController (not BaseStoreManagementController) — it + // only ever needed accessPlugin-commerce, not commerce-manageStoreSettings. + Route::get('commerce/promotions', fn() => redirect('commerce/promotions/sales')); + + // OrdersController extends the plain Yii2 Controller (not BaseCpController) — its init() + // only ever checked commerce-manageOrders, not accessPlugin-commerce. + Route::middleware('can:commerce-manageOrders')->group(function () { + Route::get('commerce/orders/{orderId}', [OrdersController::class, 'edit'])->whereNumber('orderId'); + Route::get('commerce/orders/{storeHandle}/create', [OrdersController::class, 'create']); + Route::get('commerce/orders/{orderStatusHandle?}', [OrdersController::class, 'index']); + }); + + // InventoryController checks commerce-manageInventoryStockLevels inline on every action + // (not via init()) — replicated here as a route-group-wide permission instead. + Route::middleware('can:commerce-manageInventoryStockLevels')->group(function () { + Route::get('commerce/inventory/item/{inventoryItemId}', [InventoryController::class, 'editItem'])->whereNumber('inventoryItemId'); + Route::get('commerce/inventory/levels/{inventoryLocationHandle}/orders', [InventoryController::class, 'unfulfilledOrders']); + Route::get('commerce/inventory/levels/{inventoryLocationHandle}', [InventoryController::class, 'index']); + Route::get('commerce/inventory/levels', [InventoryController::class, 'index']); + Route::get('commerce/inventory', [InventoryController::class, 'index']); + }); + + Route::middleware('can:commerce-manageInventoryLocations')->group(function () { + Route::get('commerce/inventory-locations', [InventoryLocationsController::class, 'index']); + Route::get('commerce/inventory-locations/new', [InventoryLocationsController::class, 'create']); + Route::get('commerce/inventory-locations/{inventoryLocationId}', [InventoryLocationsController::class, 'edit'])->whereNumber('inventoryLocationId'); + }); + + Route::middleware('can:commerce-manageInventoryTransfers') + ->get('commerce/inventory/transfers', [TransfersController::class, 'index']); +}); + +// The Commerce screen on the Edit User screen — permission is enforced inline via the +// EditUserScreensResolving listener in src/Plugin.php (only shows the tab/registers the +// screen if the viewer can access Commerce), matching every other Edit User screen's `auth`-only +// route-level requirement. +Route::middleware('auth')->group(function () { + Route::get('myaccount/commerce', [UsersController::class, 'index']); + Route::get('users/{userId}/commerce', [UsersController::class, 'index'])->whereNumber('userId'); +}); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 0000000000..771fc75313 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,7 @@ +whereNumber('gatewayId'); diff --git a/src-yii2/Plugin.php b/src-yii2/Plugin.php new file mode 100755 index 0000000000..59bb2c2bcd --- /dev/null +++ b/src-yii2/Plugin.php @@ -0,0 +1,11 @@ +cartCookie; + } + + public function setCartCookie(array $value): void + { + app(\CraftCms\Commerce\Order\Carts::class)->cartCookie = $value; + } + + /** + * @see \CraftCms\Commerce\Order\Carts::$cartCookieDuration + */ + public function getCartCookieDuration(): int + { + return app(\CraftCms\Commerce\Order\Carts::class)->cartCookieDuration; + } + + public function setCartCookieDuration(int $value): void + { + app(\CraftCms\Commerce\Order\Carts::class)->cartCookieDuration = $value; + } + + public function getCart(bool $forceSave = false): Order + { + return app(\CraftCms\Commerce\Order\Carts::class)->getCart($forceSave); + } + + public function peekCart(): ?Order + { + return app(\CraftCms\Commerce\Order\Carts::class)->peekCart(); + } + + public function forgetCart(): void + { + app(\CraftCms\Commerce\Order\Carts::class)->forgetCart(); + } + + public function generateCartNumber(): string + { + return app(\CraftCms\Commerce\Order\Carts::class)->generateCartNumber(); + } + + public function getActiveCartEdgeDuration(): string + { + return app(\CraftCms\Commerce\Order\Carts::class)->getActiveCartEdgeDuration(); + } + + public function getHasSessionCartNumber(): bool + { + return app(\CraftCms\Commerce\Order\Carts::class)->getHasSessionCartNumber(); + } + + public function setSessionCartNumber(string $cartNumber): void + { + app(\CraftCms\Commerce\Order\Carts::class)->setSessionCartNumber($cartNumber); + } + + public function getLoadCartUrl(Order $cart): string + { + return app(\CraftCms\Commerce\Order\Carts::class)->getLoadCartUrl($cart); + } + + public function restorePreviousCartForCurrentUser(): void + { + app(\CraftCms\Commerce\Order\Carts::class)->restorePreviousCartForCurrentUser(); + } + + public function purgeIncompleteCarts(): int + { + return app(\CraftCms\Commerce\Order\Carts::class)->purgeIncompleteCarts(); + } + + public static function registerEvents(): void + { + Event::listen(CartPurgeEvent::class, static function(CartPurgeEvent $event) { + $legacy = Plugin::getInstance()->getCarts(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_PURGE_INACTIVE_CARTS)) { + $legacy->trigger(self::EVENT_BEFORE_PURGE_INACTIVE_CARTS, $event); + } + }); + } +} diff --git a/src-yii2/services/CatalogPricing.php b/src-yii2/services/CatalogPricing.php new file mode 100755 index 0000000000..cfe7b453c5 --- /dev/null +++ b/src-yii2/services/CatalogPricing.php @@ -0,0 +1,84 @@ +generateCatalogPrices($purchasableIds, $catalogPricingRules, $showConsoleOutput ? new ConsoleOutput() : null, $queue); + } + + public function getCatalogPrice(int $purchasableId, ?int $storeId = null, ?int $userId = null, bool $isPromotionalPrice = false): ?float + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->getCatalogPrice($purchasableId, $storeId, $userId, $isPromotionalPrice); + } + + public function getCatalogPricesByPurchasableId(int $purchasableId, ?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->getCatalogPricesByPurchasableId($purchasableId, $storeId); + } + + public function getCatalogPrices(int $storeId, ?CatalogPricingCondition $conditionBuilder = null, bool $includeBasePrices = true, ?string $searchText = null, ?int $limit = null, ?int $offset = null): Collection + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->getCatalogPrices($storeId, $conditionBuilder, $includeBasePrices, $searchText, $limit, $offset); + } + + public function getCatalogPricesPageInfo(int $storeId, ?CatalogPricingCondition $conditionBuilder = null, bool $includeBasePrices = true, ?string $searchText = null, int $limit = 100, int $offset = 0): mixed + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->getCatalogPricesPageInfo($storeId, $conditionBuilder, $includeBasePrices, $searchText, $limit, $offset); + } + + public function markPricesAsUpdatePending(int|array|null $catalogPricingRuleId = null, int|array|null $purchasableId = null, int|array|null $storeId = null): void + { + app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->markPricesAsUpdatePending($catalogPricingRuleId, $purchasableId, $storeId); + } + + public function createCatalogPricingJob(array $config = [], int $priority = 100): void + { + app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->createCatalogPricingJob($config, $priority); + } + + public function areCatalogPricingJobsRunning(): bool + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->areCatalogPricingJobsRunning(); + } + + public function reserveCatalogPricingQueueRow(): ?CatalogPricingQueueRecord + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->reserveCatalogPricingQueueRow(); + } + + public function releaseCatalogPricingQueueRowById(int $id): void + { + app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->releaseCatalogPricingQueueRowById($id); + } + + public function deleteCatalogPricingQueueRowById(int $id): void + { + app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->deleteCatalogPricingQueueRowById($id); + } + + // TODO: return type will differ (Builder vs craft\db\Query) — update callers when migrated + public function createCatalogPricingQuery(?int $userId = null, int|string|null $storeId = null, ?bool $isPromotionalPrice = null, bool $allPrices = false, ?CatalogPricingCondition $condition = null): mixed + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->createCatalogPricingQuery($userId, $storeId, $isPromotionalPrice, $allPrices, $condition); + } + + // TODO: return type will differ (Builder vs craft\db\Query) — update callers when migrated + public function createCatalogPricesQuery(?int $userId = null, int|string|null $storeId = null, bool $allPrices = false, ?CatalogPricingCondition $condition = null): mixed + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricing::class)->createCatalogPricesQuery($userId, $storeId, $allPrices, $condition); + } +} diff --git a/src-yii2/services/CatalogPricingRules.php b/src-yii2/services/CatalogPricingRules.php new file mode 100644 index 0000000000..df0587ee84 --- /dev/null +++ b/src-yii2/services/CatalogPricingRules.php @@ -0,0 +1,83 @@ +hasCatalogPricingRules(); + } + + public function canUseCatalogPricingRules(): bool + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricingRules::class)->canUseCatalogPricingRules(); + } + + public function getCatalogPricingRuleById(int $id, ?int $storeId = null): ?CatalogPricingRule + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricingRules::class)->getCatalogPricingRuleById($id, $storeId); + } + + /** + * @return Collection + */ + public function getAllCatalogPricingRules(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricingRules::class)->getAllCatalogPricingRules($storeId); + } + + /** + * @return Collection + */ + public function getAllCatalogPricingRulesByPurchasableId(int $purchasableId, ?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricingRules::class)->getAllCatalogPricingRulesByPurchasableId($purchasableId, $storeId); + } + + /** + * @return Collection + */ + public function getAllEnabledCatalogPricingRules(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricingRules::class)->getAllEnabledCatalogPricingRules($storeId); + } + + /** + * @return Collection + */ + public function getAllActiveCatalogPricingRules(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricingRules::class)->getAllActiveCatalogPricingRules($storeId); + } + + /** + * @return Collection + */ + public function getAllCatalogPricingRulesWithUserConditions(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricingRules::class)->getAllCatalogPricingRulesWithUserConditions($storeId); + } + + public function generateRulePriceFromPrice(?float $basePrice, ?float $basePromotionalPrice, CatalogPricingRule $catalogPricingRule): ?float + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricingRules::class)->generateRulePriceFromPrice($basePrice, $basePromotionalPrice, $catalogPricingRule); + } + + public function saveCatalogPricingRule(CatalogPricingRule $catalogPricingRule, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricingRules::class)->saveCatalogPricingRule($catalogPricingRule, $runValidation); + } + + public function deleteCatalogPricingRuleById(int $id): bool + { + return app(\CraftCms\Commerce\CatalogPricing\CatalogPricingRules::class)->deleteCatalogPricingRuleById($id); + } +} diff --git a/src-yii2/services/Coupons.php b/src-yii2/services/Coupons.php new file mode 100644 index 0000000000..e6fffd1966 --- /dev/null +++ b/src-yii2/services/Coupons.php @@ -0,0 +1,63 @@ +getAllCodes(); + } + + public function getCouponByCode(string $code): ?Coupon + { + return app(\CraftCms\Commerce\Promotion\Coupons::class)->getCouponByCode($code); + } + + /** + * @return Coupon[] + */ + public function getCouponsByDiscountId(int $discountId): array + { + return app(\CraftCms\Commerce\Promotion\Coupons::class)->getCouponsByDiscountId($discountId); + } + + /** + * @param string[] $existingCodes + * @return string[] + * @throws \Exception + */ + public function generateCouponCodes(int $count = 1, string $format = self::DEFAULT_COUPON_FORMAT, array $existingCodes = []): array + { + return app(\CraftCms\Commerce\Promotion\Coupons::class)->generateCouponCodes($count, $format, $existingCodes); + } + + public function deleteCouponById(int $id): bool + { + return app(\CraftCms\Commerce\Promotion\Coupons::class)->deleteCouponById($id); + } + + public function saveDiscountCoupons(Discount $discount): bool + { + return app(\CraftCms\Commerce\Promotion\Coupons::class)->saveDiscountCoupons($discount); + } + + public function saveCoupon(Coupon $coupon, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Promotion\Coupons::class)->saveCoupon($coupon, $runValidation); + } +} diff --git a/src-yii2/services/Currencies.php b/src-yii2/services/Currencies.php new file mode 100644 index 0000000000..034a021b87 --- /dev/null +++ b/src-yii2/services/Currencies.php @@ -0,0 +1,47 @@ +getTeller($currency); + } + + public function getCurrencyByIso(string $iso): ?Currency + { + return app(\CraftCms\Commerce\Payment\Currencies::class)->getCurrencyByIso($iso); + } + + /** + * @return Collection + */ + public function getAllCurrencies(): Collection + { + return app(\CraftCms\Commerce\Payment\Currencies::class)->getAllCurrencies(); + } + + public function getAllCurrenciesList(): array + { + return app(\CraftCms\Commerce\Payment\Currencies::class)->getAllCurrenciesList(); + } + + public function getSubunitFor(Currency|string $currency): int + { + return app(\CraftCms\Commerce\Payment\Currencies::class)->getSubunitFor($currency); + } + + public function numericCodeFor(Currency|string $currency): int + { + return app(\CraftCms\Commerce\Payment\Currencies::class)->numericCodeFor($currency); + } +} diff --git a/src-yii2/services/Customers.php b/src-yii2/services/Customers.php new file mode 100644 index 0000000000..1bd3b2f475 --- /dev/null +++ b/src-yii2/services/Customers.php @@ -0,0 +1,77 @@ +savePrimaryShippingAddressId($user, $addressId); + } + + public function savePrimaryBillingAddressId(User $user, ?int $addressId): bool + { + return app(\CraftCms\Commerce\Customer\Customers::class)->savePrimaryBillingAddressId($user, $addressId); + } + + public function savePrimaryPaymentSourceId(User $user, ?int $paymentSourceId): bool + { + return app(\CraftCms\Commerce\Customer\Customers::class)->savePrimaryPaymentSourceId($user, $paymentSourceId); + } + + public function loginHandler(): void + { + app(\CraftCms\Commerce\Customer\Customers::class)->loginHandler(); + } + + public function orderCompleteHandler(Order $order): void + { + app(\CraftCms\Commerce\Customer\Customers::class)->orderCompleteHandler($order); + } + + /** + * @param Order[] $orders + * @return Order[] + */ + public function eagerLoadCustomerForOrders(array $orders): array + { + return app(\CraftCms\Commerce\Customer\Customers::class)->eagerLoadCustomerForOrders($orders); + } + + public function ensureCustomer(User $user): CustomerRecord + { + return app(\CraftCms\Commerce\Customer\Customers::class)->ensureCustomer($user); + } + + /** + * @throws ElementNotFoundException + */ + public function transferCustomerData(User $fromCustomer, User $toCustomer): bool + { + return app(\CraftCms\Commerce\Customer\Customers::class)->transferCustomerData($fromCustomer, $toCustomer); + } + + public static function registerEvents(): void + { + Event::listen(UpdatePrimaryPaymentSourceEvent::class, static function(UpdatePrimaryPaymentSourceEvent $event) { + $legacy = Plugin::getInstance()->getCustomers(); + if ($legacy->hasEventHandlers(self::EVENT_UPDATE_PRIMARY_PAYMENT_SOURCE)) { + $legacy->trigger(self::EVENT_UPDATE_PRIMARY_PAYMENT_SOURCE, $event); + } + }); + } +} diff --git a/src-yii2/services/Discounts.php b/src-yii2/services/Discounts.php new file mode 100644 index 0000000000..cdf23e402b --- /dev/null +++ b/src-yii2/services/Discounts.php @@ -0,0 +1,121 @@ +getDiscountById($id, $storeId); + } + + /** + * @return Collection + */ + public function getAllDiscounts(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->getAllDiscounts($storeId); + } + + /** + * @return Discount[] + */ + public function getAllActiveDiscounts(?Order $order = null): array + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->getAllActiveDiscounts($order); + } + + public function orderCouponAvailable(Order $order, ?string &$explanation = null): bool + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->orderCouponAvailable($order, $explanation); + } + + public function getDiscountByCode(?string $code, ?int $storeId = null): ?Discount + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->getDiscountByCode($code, $storeId); + } + + /** + * @return Discount[] + */ + public function getDiscountsRelatedToPurchasable(PurchasableInterface $purchasable): array + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->getDiscountsRelatedToPurchasable($purchasable); + } + + public function matchLineItem(LineItem $lineItem, Discount $discount, bool $matchOrder = false): bool + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->matchLineItem($lineItem, $discount, $matchOrder); + } + + public function matchOrder(Order $order, Discount $discount): bool + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->matchOrder($order, $discount); + } + + public function saveDiscount(Discount $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->saveDiscount($model, $runValidation); + } + + public function deleteDiscountById(int $id): bool + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->deleteDiscountById($id); + } + + public function ensureSortOrder(?int $storeId = null): void + { + app(\CraftCms\Commerce\Promotion\Discounts::class)->ensureSortOrder($storeId); + } + + public function clearCustomerUsageHistoryById(int $id): void + { + app(\CraftCms\Commerce\Promotion\Discounts::class)->clearCustomerUsageHistoryById($id); + } + + public function clearEmailUsageHistoryById(int $id): void + { + app(\CraftCms\Commerce\Promotion\Discounts::class)->clearEmailUsageHistoryById($id); + } + + public function clearDiscountUsesById(int $id): void + { + app(\CraftCms\Commerce\Promotion\Discounts::class)->clearDiscountUsesById($id); + } + + public function reorderDiscounts(array $ids): bool + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->reorderDiscounts($ids); + } + + public function appendCouponCode(int $discountId, string|Coupon $coupon, ?int $maxUses = null): bool + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->appendCouponCode($discountId, $coupon, $maxUses); + } + + public function getEmailUsageStatsById(int $id): array + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->getEmailUsageStatsById($id); + } + + public function getCustomerUsageStatsById(int $id): array + { + return app(\CraftCms\Commerce\Promotion\Discounts::class)->getCustomerUsageStatsById($id); + } + + public function orderCompleteHandler(Order $order): void + { + app(\CraftCms\Commerce\Promotion\Discounts::class)->orderCompleteHandler($order); + } +} diff --git a/src-yii2/services/Emails.php b/src-yii2/services/Emails.php new file mode 100644 index 0000000000..9058d54f2f --- /dev/null +++ b/src-yii2/services/Emails.php @@ -0,0 +1,149 @@ +getEmailById($id, $storeId); + } + + /** + * @return Collection + */ + public function getAllEmails(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Email\Emails::class)->getAllEmails($storeId); + } + + /** + * @return Collection + */ + public function getAllEnabledEmails(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Email\Emails::class)->getAllEnabledEmails($storeId); + } + + public function saveEmail(Email $email, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Email\Emails::class)->saveEmail($email, $runValidation); + } + + /** + * @throws Throwable if reasons + */ + public function handleChangedEmail(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Email\Emails::class)->handleChangedEmail(new \CraftCms\Cms\ProjectConfig\Events\ItemUpdated($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + public function deleteEmailById(int $id): bool + { + return app(\CraftCms\Commerce\Email\Emails::class)->deleteEmailById($id); + } + + /** + * @throws Throwable + */ + public function handleDeletedEmail(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Email\Emails::class)->handleDeletedEmail(new \CraftCms\Cms\ProjectConfig\Events\ItemRemoved($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + /** + * @throws Exception + * @throws Throwable + */ + public function sendEmail(Email $email, Order $order, ?OrderHistory $orderHistory = null, ?array $orderData = null, string &$error = ''): bool + { + return app(\CraftCms\Commerce\Email\Emails::class)->sendEmail($email, $order, $orderHistory, $orderData, $error); + } + + /** + * @return Email[] + */ + public function getAllEmailsByOrderStatusId(int $id): array + { + return app(\CraftCms\Commerce\Email\Emails::class)->getAllEmailsByOrderStatusId($id); + } + + public static function registerEvents(): void + { + Event::listen(EmailSaving::class, static function(EmailSaving $event) { + $legacy = Plugin::getInstance()->getEmails(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_SAVE_EMAIL)) { + $legacy->trigger(self::EVENT_BEFORE_SAVE_EMAIL, $event); + } + }); + + Event::listen(EmailSaved::class, static function(EmailSaved $event) { + $legacy = Plugin::getInstance()->getEmails(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_SAVE_EMAIL)) { + $legacy->trigger(self::EVENT_AFTER_SAVE_EMAIL, $event); + } + }); + + Event::listen(EmailDeleting::class, static function(EmailDeleting $event) { + $legacy = Plugin::getInstance()->getEmails(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_DELETE_EMAIL)) { + $legacy->trigger(self::EVENT_BEFORE_DELETE_EMAIL, $event); + } + }); + + Event::listen(EmailDeleted::class, static function(EmailDeleted $event) { + $legacy = Plugin::getInstance()->getEmails(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_DELETE_EMAIL)) { + $legacy->trigger(self::EVENT_AFTER_DELETE_EMAIL, $event); + } + }); + + Event::listen(MailSending::class, static function(MailSending $event) { + $legacy = Plugin::getInstance()->getEmails(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_SEND_MAIL)) { + $legacy->trigger(self::EVENT_BEFORE_SEND_MAIL, $event); + } + }); + + Event::listen(MailSent::class, static function(MailSent $event) { + $legacy = Plugin::getInstance()->getEmails(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_SEND_MAIL)) { + $legacy->trigger(self::EVENT_AFTER_SEND_MAIL, $event); + } + }); + } +} diff --git a/src-yii2/services/Formulas.php b/src-yii2/services/Formulas.php new file mode 100644 index 0000000000..f2e7800209 --- /dev/null +++ b/src-yii2/services/Formulas.php @@ -0,0 +1,41 @@ +validateConditionSyntax($condition, $params); + } + + public function validateFormulaSyntax(string $formula, array $params): bool + { + return app(\CraftCms\Commerce\Formula\Formulas::class)->validateFormulaSyntax($formula, $params); + } + + /** + * @throws SyntaxError + * @throws LoaderError + */ + public function evaluateCondition(string $formula, array $params, string $name = 'Evaluate Condition'): bool + { + return app(\CraftCms\Commerce\Formula\Formulas::class)->evaluateCondition($formula, $params, $name); + } + + /** + * @throws SyntaxError + * @throws LoaderError + */ + public function evaluateFormula(string $formula, array $params, ?string $setType = null, ?string $name = 'Inline formula'): mixed + { + return app(\CraftCms\Commerce\Formula\Formulas::class)->evaluateFormula($formula, $params, $setType, $name); + } +} diff --git a/src-yii2/services/Gateways.php b/src-yii2/services/Gateways.php new file mode 100644 index 0000000000..54038869e1 --- /dev/null +++ b/src-yii2/services/Gateways.php @@ -0,0 +1,118 @@ +register()` instead. */ + public const EVENT_REGISTER_GATEWAY_TYPES = 'registerGatewayTypes'; + + public const CONFIG_GATEWAY_KEY = \CraftCms\Commerce\Payment\Gateway\Gateways::CONFIG_GATEWAY_KEY; + + /** + * @return string[] + */ + public function getAllGatewayTypes(): array + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->getAllGatewayTypes(); + } + + /** + * @return Collection + */ + public function getAllCustomerEnabledGateways(): Collection + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->getAllCustomerEnabledGateways(); + } + + /** + * @return Collection + */ + public function getAllCustomerEnabledGatewaysAndAvailableForUseWithOrder(Order $order): Collection + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->getAllCustomerEnabledGatewaysAndAvailableForUseWithOrder($order); + } + + /** + * @return Collection + */ + public function getAllGateways(): Collection + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->getAllGateways(); + } + + /** + * @return Gateway[] + */ + public function getAllArchivedGateways(): array + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->getAllArchivedGateways(); + } + + public function archiveGatewayById(int $id): bool + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->archiveGatewayById($id); + } + + public function getGatewayById(int $id): ?Gateway + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->getGatewayById($id); + } + + public function getGatewayByHandle(string $handle): ?Gateway + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->getGatewayByHandle($handle); + } + + public function saveGateway(Gateway $gateway, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->saveGateway($gateway, $runValidation); + } + + /** + * @throws Throwable if reasons + */ + public function handleChangedGateway(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->handleChangedGateway(new \CraftCms\Cms\ProjectConfig\Events\ItemUpdated($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + /** + * @throws Throwable if reasons + */ + public function handleArchivedGateway(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->handleArchivedGateway(new \CraftCms\Cms\ProjectConfig\Events\ItemRemoved($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + /** + * @param int[] $ids + */ + public function reorderGateways(array $ids): bool + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->reorderGateways($ids); + } + + public function createGateway(string|array $config): Gateway + { + return app(\CraftCms\Commerce\Payment\Gateway\Gateways::class)->createGateway($config); + } + + /** @internal */ + public static function finalizeRegistrationEvents(): void + { + TypeRegistryCompatibility::reconcile(app(GatewayTypes::class), \craft\commerce\Plugin::getInstance()->getGateways(), self::EVENT_REGISTER_GATEWAY_TYPES); + } +} diff --git a/src-yii2/services/Inventory.php b/src-yii2/services/Inventory.php new file mode 100644 index 0000000000..da2a5bea30 --- /dev/null +++ b/src-yii2/services/Inventory.php @@ -0,0 +1,176 @@ + + */ + public function getInventoryLevelsForPurchasable(Purchasable|NewPurchasable $purchasable): Collection + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getInventoryLevelsForPurchasable($purchasable); + } + + public function getInventoryItemByPurchasable(Purchasable|NewPurchasable $purchasable): InventoryItem + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getInventoryItemByPurchasable($purchasable); + } + + public function ensureInventoryItemRecord(Purchasable|NewPurchasable $purchasable): ?InventoryItemRecord + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->ensureInventoryItemRecord($purchasable); + } + + public function getInventoryItemById(int $id): InventoryItem + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getInventoryItemById($id); + } + + /** + * @param array $ids + * @return Collection + */ + public function getInventoryItemsByIds(array $ids): Collection + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getInventoryItemsByIds($ids); + } + + public function getInventoryLevel(InventoryItem|int $inventoryItem, InventoryLocation|int $inventoryLocation, bool $withTrashed = false): ?InventoryLevel + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getInventoryLevel($inventoryItem, $inventoryLocation, $withTrashed); + } + + public function saveInventoryItem(InventoryItem $inventoryItem, bool $validate = true): bool + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->saveInventoryItem($inventoryItem); + } + + /** + * @return Collection + */ + public function getInventoryLocationLevels(InventoryLocation $inventoryLocation, bool $withTrashed = false): Collection + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getInventoryLocationLevels($inventoryLocation, $withTrashed); + } + + public function getInventoryLevelQuery(?int $limit = null, ?int $offset = null, bool $withTrashed = false): \Illuminate\Database\Query\Builder + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getInventoryLevelQuery($limit, $offset, $withTrashed); + } + + public function getInventoryItemQuery(): \Illuminate\Database\Query\Builder + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getInventoryItemQuery(); + } + + public function executeUpdateInventoryLevels(UpdateInventoryLevelCollection $updateInventoryLevels): bool + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->executeUpdateInventoryLevels($updateInventoryLevels); + } + + /** + * @param array $updateInventoryLevelAttributes + */ + public function updateInventoryLevel(int $inventoryItemId, int $quantity, array $updateInventoryLevelAttributes = []): void + { + app(\CraftCms\Commerce\Inventory\Inventory::class)->updateInventoryLevel($inventoryItemId, $quantity, $updateInventoryLevelAttributes); + } + + /** + * @param array $updateInventoryLevelAttributes + */ + public function updatePurchasableInventoryLevel(Purchasable|NewPurchasable $purchasable, int $quantity, array $updateInventoryLevelAttributes = []): void + { + app(\CraftCms\Commerce\Inventory\Inventory::class)->updatePurchasableInventoryLevel($purchasable, $quantity, $updateInventoryLevelAttributes); + } + + public function executeInventoryMovements(InventoryMovementCollection $inventoryMovements): bool + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->executeInventoryMovements($inventoryMovements); + } + + public function getMovementHash(): string + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getMovementHash(); + } + + public function getUnfulfilledOrders(InventoryItem|int $inventoryItem, InventoryLocation|int $inventoryLocation): array + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getUnfulfilledOrders($inventoryItem, $inventoryLocation); + } + + public function getTransactionQuery(): \Illuminate\Database\Query\Builder + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getTransactionQuery(); + } + + /** + * @return Collection + */ + public function getInventoryTransactions(InventoryItem $inventoryItem, InventoryLocation $inventoryLocation): Collection + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getInventoryTransactions($inventoryItem, $inventoryLocation); + } + + /** + * @return Collection + */ + public function getInventoryFulfillmentLevels(Order $order): Collection + { + return app(\CraftCms\Commerce\Inventory\Inventory::class)->getInventoryFulfillmentLevels($order); + } + + public function orderCompleteHandler(Order $order): void + { + app(\CraftCms\Commerce\Inventory\Inventory::class)->orderCompleteHandler($order); + } + + public static function registerEvents(): void + { + Event::listen(UpdateInventoryLevelEvent::class, static function(UpdateInventoryLevelEvent $event) { + $legacy = Plugin::getInstance()->getInventory(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_EXECUTE_UPDATE_INVENTORY_LEVEL)) { + $legacy->trigger(self::EVENT_AFTER_EXECUTE_UPDATE_INVENTORY_LEVEL, $event); + } + }); + + Event::listen(InventoryMovementEvent::class, static function(InventoryMovementEvent $event) { + $legacy = Plugin::getInstance()->getInventory(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_EXECUTE_INVENTORY_MOVEMENT)) { + $legacy->trigger(self::EVENT_AFTER_EXECUTE_INVENTORY_MOVEMENT, $event); + } + }); + } +} diff --git a/src-yii2/services/InventoryLocations.php b/src-yii2/services/InventoryLocations.php new file mode 100644 index 0000000000..f327b247bc --- /dev/null +++ b/src-yii2/services/InventoryLocations.php @@ -0,0 +1,61 @@ + + */ + public function getAllInventoryLocations(bool $withTrashed = false): Collection + { + return app(\CraftCms\Commerce\Inventory\InventoryLocations::class)->getAllInventoryLocations($withTrashed); + } + + public function getAllInventoryLocationsAsList(bool $withTrashed = false): array + { + return app(\CraftCms\Commerce\Inventory\InventoryLocations::class)->getAllInventoryLocationsAsList($withTrashed); + } + + public function getInventoryLocationById(int $id, bool $withTrashed = false): ?InventoryLocation + { + return app(\CraftCms\Commerce\Inventory\InventoryLocations::class)->getInventoryLocationById($id, $withTrashed); + } + + /** + * @return Collection + */ + public function getInventoryLocations(?int $storeId = null, bool $withTrashed = false): Collection + { + return app(\CraftCms\Commerce\Inventory\InventoryLocations::class)->getInventoryLocations($storeId, $withTrashed); + } + + public function saveStoreInventoryLocations(Store $store, array $inventoryLocationIds): bool + { + return app(\CraftCms\Commerce\Inventory\InventoryLocations::class)->saveStoreInventoryLocations($store, $inventoryLocationIds); + } + + public function executeDeactivateInventoryLocation(DeactivateInventoryLocation $deactivateInventoryLocation): bool + { + return app(\CraftCms\Commerce\Inventory\InventoryLocations::class)->executeDeactivateInventoryLocation($deactivateInventoryLocation); + } + + public function getInventoryLocationByHandle(string $handle): ?InventoryLocation + { + return app(\CraftCms\Commerce\Inventory\InventoryLocations::class)->getInventoryLocationByHandle($handle); + } + + public function saveInventoryLocation(InventoryLocation $inventoryLocation, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Inventory\InventoryLocations::class)->saveInventoryLocation($inventoryLocation, $runValidation); + } +} diff --git a/src-yii2/services/LineItemStatuses.php b/src-yii2/services/LineItemStatuses.php new file mode 100644 index 0000000000..55e5691809 --- /dev/null +++ b/src-yii2/services/LineItemStatuses.php @@ -0,0 +1,104 @@ +getLineItemStatusByHandle($handle, $storeId); + } + + public function getDefaultLineItemStatusId(?int $storeId = null): ?int + { + return app(\CraftCms\Commerce\Order\LineItemStatuses::class)->getDefaultLineItemStatusId($storeId); + } + + public function getDefaultLineItemStatus(?int $storeId = null): ?LineItemStatus + { + return app(\CraftCms\Commerce\Order\LineItemStatuses::class)->getDefaultLineItemStatus($storeId); + } + + public function getDefaultLineItemStatusForLineItem(LineItem $lineItem): ?LineItemStatus + { + return app(\CraftCms\Commerce\Order\LineItemStatuses::class)->getDefaultLineItemStatusForLineItem($lineItem); + } + + public function saveLineItemStatus(LineItemStatus $lineItemStatus, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Order\LineItemStatuses::class)->saveLineItemStatus($lineItemStatus, $runValidation); + } + + /** + * @throws Throwable if reasons + */ + public function handleChangedLineItemStatus(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Order\LineItemStatuses::class)->handleChangedLineItemStatus(new \CraftCms\Cms\ProjectConfig\Events\ItemUpdated($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + /** + * @throws Throwable + */ + public function archiveLineItemStatusById(int $id, ?int $storeId = null): bool + { + return app(\CraftCms\Commerce\Order\LineItemStatuses::class)->archiveLineItemStatusById($id, $storeId); + } + + /** + * @throws Throwable if reasons + */ + public function handleArchivedLineItemStatus(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Order\LineItemStatuses::class)->handleArchivedLineItemStatus(new \CraftCms\Cms\ProjectConfig\Events\ItemRemoved($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + /** + * @return Collection + */ + public function getAllLineItemStatuses(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Order\LineItemStatuses::class)->getAllLineItemStatuses($storeId); + } + + public function getLineItemStatusById(int $id, ?int $storeId = null): ?LineItemStatus + { + return app(\CraftCms\Commerce\Order\LineItemStatuses::class)->getLineItemStatusById($id, $storeId); + } + + /** + * @param int[] $ids + */ + public function reorderLineItemStatuses(array $ids): bool + { + return app(\CraftCms\Commerce\Order\LineItemStatuses::class)->reorderLineItemStatuses($ids); + } + + public static function registerEvents(): void + { + Event::listen(DefaultLineItemStatusEvent::class, static function(DefaultLineItemStatusEvent $event) { + $legacy = Plugin::getInstance()->getLineItemStatuses(); + if ($legacy->hasEventHandlers(self::EVENT_DEFAULT_LINE_ITEM_STATUS)) { + $legacy->trigger(self::EVENT_DEFAULT_LINE_ITEM_STATUS, $event); + } + }); + } +} diff --git a/src-yii2/services/LineItems.php b/src-yii2/services/LineItems.php new file mode 100644 index 0000000000..2c08f9012f --- /dev/null +++ b/src-yii2/services/LineItems.php @@ -0,0 +1,112 @@ +getAllLineItemsByOrderId($orderId); + } + + public function resolveLineItem(Order $order, int $purchasableId, array $options = [], array $params = []): LineItem + { + return app(\CraftCms\Commerce\Order\LineItem\LineItems::class)->resolveLineItem($order, $purchasableId, $options, $params); + } + + public function resolveCustomLineItem(Order $order, string $sku, array $options = []): LineItem + { + return app(\CraftCms\Commerce\Order\LineItem\LineItems::class)->resolveCustomLineItem($order, $sku, $options); + } + + public function saveLineItem(LineItem $lineItem, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Order\LineItem\LineItems::class)->saveLineItem($lineItem, $runValidation); + } + + public function getLineItemById(int $id): ?LineItem + { + return app(\CraftCms\Commerce\Order\LineItem\LineItems::class)->getLineItemById($id); + } + + public function create(Order $order, array $params = [], LineItemType $type = LineItemType::Purchasable): LineItem + { + return app(\CraftCms\Commerce\Order\LineItem\LineItems::class)->create($order, $params, $type); + } + + public function deleteAllLineItemsByOrderId(int $orderId): bool + { + return app(\CraftCms\Commerce\Order\LineItem\LineItems::class)->deleteAllLineItemsByOrderId($orderId); + } + + /** + * @param Order[] $orders + * @return Order[] + */ + public function eagerLoadLineItemsForOrders(array $orders): array + { + return app(\CraftCms\Commerce\Order\LineItem\LineItems::class)->eagerLoadLineItemsForOrders($orders); + } + + public function orderCompleteHandler(LineItem $lineItem, Order $order): void + { + app(\CraftCms\Commerce\Order\LineItem\LineItems::class)->orderCompleteHandler($lineItem, $order); + } + + public static function registerEvents(): void + { + Event::listen(LineItemSaving::class, static function(LineItemSaving $event) { + $legacy = Plugin::getInstance()->getLineItems(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_SAVE_LINE_ITEM)) { + $legacy->trigger(self::EVENT_BEFORE_SAVE_LINE_ITEM, $event); + } + }); + + Event::listen(LineItemSaved::class, static function(LineItemSaved $event) { + $legacy = Plugin::getInstance()->getLineItems(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_SAVE_LINE_ITEM)) { + $legacy->trigger(self::EVENT_AFTER_SAVE_LINE_ITEM, $event); + } + }); + + Event::listen(LineItemCreated::class, static function(LineItemCreated $event) { + $legacy = Plugin::getInstance()->getLineItems(); + if ($legacy->hasEventHandlers(self::EVENT_CREATE_LINE_ITEM)) { + $legacy->trigger(self::EVENT_CREATE_LINE_ITEM, $event); + } + }); + + Event::listen(LineItemPopulated::class, static function(LineItemPopulated $event) { + $legacy = Plugin::getInstance()->getLineItems(); + if ($legacy->hasEventHandlers(self::EVENT_POPULATE_LINE_ITEM)) { + $legacy->trigger(self::EVENT_POPULATE_LINE_ITEM, $event); + } + }); + } +} diff --git a/src-yii2/services/OrderAdjustments.php b/src-yii2/services/OrderAdjustments.php new file mode 100644 index 0000000000..3779671d8b --- /dev/null +++ b/src-yii2/services/OrderAdjustments.php @@ -0,0 +1,85 @@ +register()` instead. */ + public const EVENT_REGISTER_ORDER_ADJUSTERS = 'registerOrderAdjusters'; + + /** @deprecated in 6.0.0. Use `app(\CraftCms\Commerce\Order\Adjuster\DiscountAdjusterTypes::class)->register()` instead. */ + public const EVENT_REGISTER_DISCOUNT_ADJUSTERS = 'registerDiscountAdjusters'; + + /** + * @return class-string[] + */ + public function getAdjusters(): array + { + return app(\CraftCms\Commerce\Order\OrderAdjustments::class)->getAdjusters(); + } + + public function getOrderAdjustmentById(int $id): ?OrderAdjustment + { + return app(\CraftCms\Commerce\Order\OrderAdjustments::class)->getOrderAdjustmentById($id); + } + + /** + * @return OrderAdjustment[] + */ + public function getAllOrderAdjustmentsByOrderId(int $orderId): array + { + return app(\CraftCms\Commerce\Order\OrderAdjustments::class)->getAllOrderAdjustmentsByOrderId($orderId); + } + + public function saveOrderAdjustment(OrderAdjustment $orderAdjustment, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Order\OrderAdjustments::class)->saveOrderAdjustment($orderAdjustment, $runValidation); + } + + public function deleteAllOrderAdjustmentsByOrderId(int $orderId): bool + { + return app(\CraftCms\Commerce\Order\OrderAdjustments::class)->deleteAllOrderAdjustmentsByOrderId($orderId); + } + + public function deleteOrderAdjustmentByAdjustmentId(int $adjustmentId): bool + { + return app(\CraftCms\Commerce\Order\OrderAdjustments::class)->deleteOrderAdjustmentByAdjustmentId($adjustmentId); + } + + /** + * @param Order[] $orders + * @return Order[] + */ + public function eagerLoadOrderAdjustmentsForOrders(array $orders): array + { + return app(\CraftCms\Commerce\Order\OrderAdjustments::class)->eagerLoadOrderAdjustmentsForOrders($orders); + } + + /** + * @return class-string[] + */ + public function getDiscountAdjusters(): array + { + return app(\CraftCms\Commerce\Order\OrderAdjustments::class)->getDiscountAdjusters(); + } + + /** @internal */ + public static function finalizeRegistrationEvents(): void + { + $plugin = \craft\commerce\Plugin::getInstance()->getOrderAdjustments(); + + TypeRegistryCompatibility::reconcile(app(AdjusterTypes::class), $plugin, self::EVENT_REGISTER_ORDER_ADJUSTERS); + TypeRegistryCompatibility::reconcile(app(DiscountAdjusterTypes::class), $plugin, self::EVENT_REGISTER_DISCOUNT_ADJUSTERS); + } +} diff --git a/src-yii2/services/OrderHistories.php b/src-yii2/services/OrderHistories.php new file mode 100644 index 0000000000..ac1c7f9318 --- /dev/null +++ b/src-yii2/services/OrderHistories.php @@ -0,0 +1,57 @@ +getOrderHistoryById($id); + } + + /** + * @return OrderHistory[] + */ + public function getAllOrderHistoriesByOrderId(int $id): array + { + return app(\CraftCms\Commerce\Order\OrderHistories::class)->getAllOrderHistoriesByOrderId($id); + } + + public function createOrderHistoryFromOrder(Order $order, ?int $oldStatusId): bool + { + return app(\CraftCms\Commerce\Order\OrderHistories::class)->createOrderHistoryFromOrder($order, $oldStatusId); + } + + public function saveOrderHistory(OrderHistory $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Order\OrderHistories::class)->saveOrderHistory($model, $runValidation); + } + + public function deleteOrderHistoryById(int $id): bool + { + return app(\CraftCms\Commerce\Order\OrderHistories::class)->deleteOrderHistoryById($id); + } + + public static function registerEvents(): void + { + Event::listen(OrderStatusEvent::class, static function(OrderStatusEvent $event) { + $legacy = Plugin::getInstance()->getOrderHistories(); + if ($legacy->hasEventHandlers(self::EVENT_ORDER_STATUS_CHANGE)) { + $legacy->trigger(self::EVENT_ORDER_STATUS_CHANGE, $event); + } + }); + } +} diff --git a/src-yii2/services/OrderNotices.php b/src-yii2/services/OrderNotices.php new file mode 100644 index 0000000000..a7ad388e35 --- /dev/null +++ b/src-yii2/services/OrderNotices.php @@ -0,0 +1,23 @@ +eagerLoadOrderNoticesForOrders($orders); + } +} diff --git a/src-yii2/services/OrderStatuses.php b/src-yii2/services/OrderStatuses.php new file mode 100644 index 0000000000..fba6624e5b --- /dev/null +++ b/src-yii2/services/OrderStatuses.php @@ -0,0 +1,136 @@ + + */ + public function getAllOrderStatuses(?int $storeId = null, bool $withTrashed = false): Collection + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->getAllOrderStatuses($storeId, $withTrashed); + } + + public function getOrderStatusById(int $id, ?int $storeId = null): ?OrderStatus + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->getOrderStatusById($id, $storeId); + } + + public function getOrderStatusByUid(string $uid, ?int $storeId = null): ?OrderStatus + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->getOrderStatusByUid($uid, $storeId); + } + + public function getOrderStatusByHandle(string $handle, ?int $storeId = null): ?OrderStatus + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->getOrderStatusByHandle($handle, $storeId); + } + + public function getDefaultOrderStatus(?int $storeId = null): ?OrderStatus + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->getDefaultOrderStatus($storeId); + } + + public function getDefaultOrderStatusId(?int $storeId = null): ?int + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->getDefaultOrderStatusId($storeId); + } + + public function getDefaultOrderStatusForOrder(Order $order): ?OrderStatus + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->getDefaultOrderStatusForOrder($order); + } + + public function getOrderCountByStatus(?int $storeId = null): array + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->getOrderCountByStatus($storeId); + } + + public function saveOrderStatus(OrderStatus $orderStatus, array $emailIds = [], bool $runValidation = true, bool $force = false): bool + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->saveOrderStatus($orderStatus, $emailIds, $runValidation, $force); + } + + /** + * @throws Throwable if reasons + */ + public function handleChangedOrderStatus(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Order\OrderStatuses::class)->handleChangedOrderStatus(new \CraftCms\Cms\ProjectConfig\Events\ItemUpdated($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + /** + * @throws Throwable + */ + public function deleteOrderStatusById(int $id, ?int $storeId = null): bool + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->deleteOrderStatusById($id, $storeId); + } + + /** + * @throws Throwable if reasons + */ + public function handleDeletedOrderStatus(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Order\OrderStatuses::class)->handleDeletedOrderStatus(new \CraftCms\Cms\ProjectConfig\Events\ItemRemoved($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + public function pruneDeletedEmail(EmailEvent $event): void + { + app(\CraftCms\Commerce\Order\OrderStatuses::class)->pruneDeletedEmail($event); + } + + public function statusChangeHandler(Order $order, OrderHistory $orderHistory): void + { + app(\CraftCms\Commerce\Order\OrderStatuses::class)->statusChangeHandler($order, $orderHistory); + } + + /** + * @param int[] $ids + */ + public function reorderOrderStatuses(array $ids): bool + { + return app(\CraftCms\Commerce\Order\OrderStatuses::class)->reorderOrderStatuses($ids); + } + + public static function registerEvents(): void + { + Event::listen(DefaultOrderStatusEvent::class, static function(DefaultOrderStatusEvent $event) { + $legacy = Plugin::getInstance()->getOrderStatuses(); + if ($legacy->hasEventHandlers(self::EVENT_DEFAULT_ORDER_STATUS)) { + $legacy->trigger(self::EVENT_DEFAULT_ORDER_STATUS, $event); + } + }); + + Event::listen(OrderStatusEmailsEvent::class, static function(OrderStatusEmailsEvent $event) { + $legacy = Plugin::getInstance()->getOrderStatuses(); + if ($legacy->hasEventHandlers(self::EVENT_ORDER_STATUS_CHANGE_EMAILS)) { + $legacy->trigger(self::EVENT_ORDER_STATUS_CHANGE_EMAILS, $event); + } + }); + } +} diff --git a/src-yii2/services/Orders.php b/src-yii2/services/Orders.php new file mode 100644 index 0000000000..ef5eec165c --- /dev/null +++ b/src-yii2/services/Orders.php @@ -0,0 +1,77 @@ +handleChangedFieldLayout(new \CraftCms\Cms\ProjectConfig\Events\ItemUpdated($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + public function handleDeletedFieldLayout(): void + { + app(\CraftCms\Commerce\Order\Orders::class)->handleDeletedFieldLayout(); + } + + public function getOrderById(int $id): ?Order + { + return app(\CraftCms\Commerce\Order\Orders::class)->getOrderById($id); + } + + public function getOrderByNumber(string $number): ?Order + { + return app(\CraftCms\Commerce\Order\Orders::class)->getOrderByNumber($number); + } + + /** + * @return Order[]|null + */ + public function getOrdersByCustomer(User|int $customer): ?array + { + return app(\CraftCms\Commerce\Order\Orders::class)->getOrdersByCustomer($customer); + } + + /** + * @return Order[]|null + */ + public function getOrdersByEmail(string $email): ?array + { + return app(\CraftCms\Commerce\Order\Orders::class)->getOrdersByEmail($email); + } + + /** + * @param Order[] $orders + * @return Order[] + */ + public function eagerLoadAddressesForOrders(array $orders): array + { + return app(\CraftCms\Commerce\Order\Orders::class)->eagerLoadAddressesForOrders($orders); + } + + /** + * @param int|int[] $oldUserId + */ + public function reassignOrders(int|array $oldUserId, int $newUserId): int + { + return app(\CraftCms\Commerce\Order\Orders::class)->reassignOrders($oldUserId, $newUserId); + } + + /** + * @param int|int[] $orderIds + */ + public function removeCustomerData(int|array $orderIds, array $dataToRemove = ['customerId', 'email']): int + { + return app(\CraftCms\Commerce\Order\Orders::class)->removeCustomerData($orderIds, $dataToRemove); + } +} diff --git a/src-yii2/services/PaymentCurrencies.php b/src-yii2/services/PaymentCurrencies.php new file mode 100644 index 0000000000..93f5406531 --- /dev/null +++ b/src-yii2/services/PaymentCurrencies.php @@ -0,0 +1,104 @@ +getRateFor($currency, $transaction); + } + + public function getPaymentCurrencyById(int $id, ?int $storeId = null): ?PaymentCurrency + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->getPaymentCurrencyById($id, $storeId); + } + + /** + * @return Collection + */ + public function getAllPaymentCurrencies(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->getAllPaymentCurrencies($storeId); + } + + public function getPaymentCurrencyByIso(string $iso, ?int $storeId = null): ?PaymentCurrency + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->getPaymentCurrencyByIso($iso, $storeId); + } + + public function getPrimaryPaymentCurrencyIso(?int $storeId = null): string + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->getPrimaryPaymentCurrencyIso($storeId); + } + + public function getPrimaryPaymentCurrency(?int $storeId = null): ?PaymentCurrency + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->getPrimaryPaymentCurrency($storeId); + } + + /** + * @return Collection + */ + public function getNonPrimaryPaymentCurrencies(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->getNonPrimaryPaymentCurrencies($storeId); + } + + public function convert(float $amount, string $currency): float + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->convert($amount, $currency); + } + + /** + * @deprecated 6.0.0 use convertAmount() or convert() instead. + */ + public function convertCurrency(float $amount, string $fromCurrency, string $toCurrency, bool $round = false): float + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->convertCurrency($amount, $fromCurrency, $toCurrency, $round); + } + + public function savePaymentCurrency(PaymentCurrency $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->savePaymentCurrency($model, $runValidation); + } + + public function deletePaymentCurrencyById(int $id): bool + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->deletePaymentCurrencyById($id); + } + + public function convertAmount(Money $amount, Currency|string $currency, ?int $storeId = null): Money + { + return app(\CraftCms\Commerce\Payment\PaymentCurrencies::class)->convertAmount($amount, $currency, $storeId); + } + + public static function registerEvents(): void + { + Event::listen(PaymentCurrencyRateEvent::class, static function(PaymentCurrencyRateEvent $event) { + $legacy = Plugin::getInstance()->getPaymentCurrencies(); + if ($legacy->hasEventHandlers(self::EVENT_DEFINE_PAYMENT_CURRENCY_RATE)) { + $legacy->trigger(self::EVENT_DEFINE_PAYMENT_CURRENCY_RATE, $event); + } + }); + } +} diff --git a/src-yii2/services/PaymentSources.php b/src-yii2/services/PaymentSources.php new file mode 100644 index 0000000000..2f6b189f55 --- /dev/null +++ b/src-yii2/services/PaymentSources.php @@ -0,0 +1,105 @@ + + */ + public function getAllPaymentSourcesByCustomerId(?int $customerId = null, ?int $gatewayId = null): Collection + { + return app(\CraftCms\Commerce\Payment\PaymentSources::class)->getAllPaymentSourcesByCustomerId($customerId, $gatewayId); + } + + /** + * @return Collection + */ + public function getAllPaymentSourcesByGatewayId(?int $gatewayId = null): Collection + { + return app(\CraftCms\Commerce\Payment\PaymentSources::class)->getAllPaymentSourcesByGatewayId($gatewayId); + } + + /** + * @return Collection + */ + public function getAllGatewayPaymentSourcesByCustomerId(?int $gatewayId = null, ?int $customerId = null): Collection + { + return app(\CraftCms\Commerce\Payment\PaymentSources::class)->getAllGatewayPaymentSourcesByCustomerId($gatewayId, $customerId); + } + + public function getPaymentSourceByTokenAndGatewayId(string $token, int $gatewayId): ?PaymentSource + { + return app(\CraftCms\Commerce\Payment\PaymentSources::class)->getPaymentSourceByTokenAndGatewayId($token, $gatewayId); + } + + public function getPaymentSourceById(int $sourceId): ?PaymentSource + { + return app(\CraftCms\Commerce\Payment\PaymentSources::class)->getPaymentSourceById($sourceId); + } + + public function getPaymentSourceByIdAndUserId(int $sourceId, int $userId): ?PaymentSource + { + return app(\CraftCms\Commerce\Payment\PaymentSources::class)->getPaymentSourceByIdAndUserId($sourceId, $userId); + } + + public function createPaymentSource(int $customerId, GatewayInterface $gateway, BasePaymentForm $paymentForm, ?string $sourceDescription = null, bool $makePrimarySource = false): PaymentSource + { + return app(\CraftCms\Commerce\Payment\PaymentSources::class)->createPaymentSource($customerId, $gateway, $paymentForm, $sourceDescription, $makePrimarySource); + } + + public function savePaymentSource(PaymentSource $paymentSource, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Payment\PaymentSources::class)->savePaymentSource($paymentSource, $runValidation); + } + + public function deletePaymentSourceById(int $id): bool + { + return app(\CraftCms\Commerce\Payment\PaymentSources::class)->deletePaymentSourceById($id); + } + + public static function registerEvents(): void + { + Event::listen(PaymentSourceSaving::class, static function(PaymentSourceSaving $event) { + $legacy = Plugin::getInstance()->getPaymentSources(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_SAVE_PAYMENT_SOURCE)) { + $legacy->trigger(self::EVENT_BEFORE_SAVE_PAYMENT_SOURCE, $event); + } + }); + + Event::listen(PaymentSourceSaved::class, static function(PaymentSourceSaved $event) { + $legacy = Plugin::getInstance()->getPaymentSources(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_SAVE_PAYMENT_SOURCE)) { + $legacy->trigger(self::EVENT_AFTER_SAVE_PAYMENT_SOURCE, $event); + } + }); + + Event::listen(PaymentSourceDeleting::class, static function(PaymentSourceDeleting $event) { + $legacy = Plugin::getInstance()->getPaymentSources(); + if ($legacy->hasEventHandlers(self::EVENT_DELETE_PAYMENT_SOURCE)) { + $legacy->trigger(self::EVENT_DELETE_PAYMENT_SOURCE, $event); + } + }); + } +} diff --git a/src-yii2/services/Payments.php b/src-yii2/services/Payments.php new file mode 100644 index 0000000000..a2665690bd --- /dev/null +++ b/src-yii2/services/Payments.php @@ -0,0 +1,125 @@ +processPayment($order, $form, $redirect, $transaction, $redirectData); + } + + /** + * @throws TransactionException if something went wrong when saving the transaction + */ + public function captureTransaction(Transaction $transaction): Transaction + { + return app(\CraftCms\Commerce\Payment\Payments::class)->captureTransaction($transaction); + } + + /** + * @throws RefundException if something went wrong during the refund. + */ + public function refundTransaction(Transaction $transaction, ?float $amount = null, string $note = ''): Transaction + { + return app(\CraftCms\Commerce\Payment\Payments::class)->refundTransaction($transaction, $amount, $note); + } + + public function completePayment(Transaction $transaction, ?string &$customError): bool + { + return app(\CraftCms\Commerce\Payment\Payments::class)->completePayment($transaction, $customError); + } + + public static function registerEvents(): void + { + Event::listen(PaymentProcessing::class, static function(PaymentProcessing $event) { + $legacy = Plugin::getInstance()->getPayments(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_PROCESS_PAYMENT)) { + $legacy->trigger(self::EVENT_BEFORE_PROCESS_PAYMENT, $event); + } + }); + + Event::listen(PaymentProcessed::class, static function(PaymentProcessed $event) { + $legacy = Plugin::getInstance()->getPayments(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_PROCESS_PAYMENT)) { + $legacy->trigger(self::EVENT_AFTER_PROCESS_PAYMENT, $event); + } + }); + + Event::listen(TransactionCapturing::class, static function(TransactionCapturing $event) { + $legacy = Plugin::getInstance()->getPayments(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_CAPTURE_TRANSACTION)) { + $legacy->trigger(self::EVENT_BEFORE_CAPTURE_TRANSACTION, $event); + } + }); + + Event::listen(TransactionCaptured::class, static function(TransactionCaptured $event) { + $legacy = Plugin::getInstance()->getPayments(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_CAPTURE_TRANSACTION)) { + $legacy->trigger(self::EVENT_AFTER_CAPTURE_TRANSACTION, $event); + } + }); + + Event::listen(TransactionRefunding::class, static function(TransactionRefunding $event) { + $legacy = Plugin::getInstance()->getPayments(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_REFUND_TRANSACTION)) { + $legacy->trigger(self::EVENT_BEFORE_REFUND_TRANSACTION, $event); + } + }); + + Event::listen(TransactionRefunded::class, static function(TransactionRefunded $event) { + $legacy = Plugin::getInstance()->getPayments(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_REFUND_TRANSACTION)) { + $legacy->trigger(self::EVENT_AFTER_REFUND_TRANSACTION, $event); + } + }); + + Event::listen(PaymentCompleted::class, static function(PaymentCompleted $event) { + $legacy = Plugin::getInstance()->getPayments(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_COMPLETE_PAYMENT)) { + $legacy->trigger(self::EVENT_AFTER_COMPLETE_PAYMENT, $event); + } + }); + } +} diff --git a/src-yii2/services/Pdfs.php b/src-yii2/services/Pdfs.php new file mode 100644 index 0000000000..fb0c7b3c30 --- /dev/null +++ b/src-yii2/services/Pdfs.php @@ -0,0 +1,161 @@ + + */ + public function getAllPdfs(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->getAllPdfs($storeId); + } + + public function getHasEnabledPdf(?int $storeId = null): bool + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->getHasEnabledPdf($storeId); + } + + /** + * @return Collection + */ + public function getAllEnabledPdfs(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->getAllEnabledPdfs($storeId); + } + + public function getDefaultPdf(?int $storeId = null): ?Pdf + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->getDefaultPdf($storeId); + } + + public function getPdfByHandle(string $handle, ?int $storeId = null): ?Pdf + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->getPdfByHandle($handle, $storeId); + } + + public function getPdfById(int $id, ?int $storeId = null): ?Pdf + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->getPdfById($id, $storeId); + } + + public function savePdf(Pdf $pdf, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->savePdf($pdf, $runValidation); + } + + public function handleChangedPdf(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Pdf\Pdfs::class)->handleChangedPdf(new \CraftCms\Cms\ProjectConfig\Events\ItemUpdated($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + public function deletePdfById(int $id): bool + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->deletePdfById($id); + } + + /** + * @throws Throwable + */ + public function handleDeletedPdf(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Pdf\Pdfs::class)->handleDeletedPdf(new \CraftCms\Cms\ProjectConfig\Events\ItemRemoved($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + /** + * @param int[] $ids + */ + public function reorderPdfs(array $ids): bool + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->reorderPdfs($ids); + } + + public function getPdfUrl(Order $order, ?string $option = null, ?string $pdfHandle = null, bool $inline = false): string + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->getPdfUrl($order, $option, $pdfHandle, $inline); + } + + public function renderPdfForOrder(Order $order, string $option = '', ?string $templatePath = null, array $variables = [], ?Pdf $pdf = null): string + { + return app(\CraftCms\Commerce\Pdf\Pdfs::class)->renderPdfForOrder($order, $option, $templatePath, $variables, $pdf); + } + + public static function registerEvents(): void + { + Event::listen(PdfSaving::class, static function(PdfSaving $event) { + $legacy = Plugin::getInstance()->getPdfs(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_SAVE_PDF)) { + $legacy->trigger(self::EVENT_BEFORE_SAVE_PDF, $event); + } + }); + + Event::listen(PdfSaved::class, static function(PdfSaved $event) { + $legacy = Plugin::getInstance()->getPdfs(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_SAVE_PDF)) { + $legacy->trigger(self::EVENT_AFTER_SAVE_PDF, $event); + } + }); + + Event::listen(PdfDeleting::class, static function(PdfDeleting $event) { + $legacy = Plugin::getInstance()->getPdfs(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_DELETE_PDF)) { + $legacy->trigger(self::EVENT_BEFORE_DELETE_PDF, $event); + } + }); + + Event::listen(PdfRendering::class, static function(PdfRendering $event) { + $legacy = Plugin::getInstance()->getPdfs(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_RENDER_PDF)) { + $legacy->trigger(self::EVENT_BEFORE_RENDER_PDF, $event); + } + }); + + Event::listen(PdfRendered::class, static function(PdfRendered $event) { + $legacy = Plugin::getInstance()->getPdfs(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_RENDER_PDF)) { + $legacy->trigger(self::EVENT_AFTER_RENDER_PDF, $event); + } + }); + + Event::listen(PdfRenderOptionsEvent::class, static function(PdfRenderOptionsEvent $event) { + $legacy = Plugin::getInstance()->getPdfs(); + if ($legacy->hasEventHandlers(self::EVENT_MODIFY_RENDER_OPTIONS)) { + $legacy->trigger(self::EVENT_MODIFY_RENDER_OPTIONS, $event); + } + }); + } +} diff --git a/src-yii2/services/ProductTypes.php b/src-yii2/services/ProductTypes.php new file mode 100755 index 0000000000..93b8dab565 --- /dev/null +++ b/src-yii2/services/ProductTypes.php @@ -0,0 +1,151 @@ +getViewableProductTypes(); + } + + public function getViewableProductTypeIds(bool $anySite = false): array + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getViewableProductTypeIds($anySite); + } + + public function getCreatableProductTypeIds(): array + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getCreatableProductTypeIds(); + } + + /** + * @return ProductType[] + */ + public function getCreatableProductTypes(): array + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getCreatableProductTypes(); + } + + public function getAllProductTypeIds(): array + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getAllProductTypeIds(); + } + + /** + * @return ProductType[] + */ + public function getAllProductTypes(): array + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getAllProductTypes(); + } + + public function getProductTypeByHandle(string $handle): ?ProductType + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getProductTypeByHandle($handle); + } + + public function getProductTypeById(int $productTypeId): ?ProductType + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getProductTypeById($productTypeId); + } + + public function getProductTypeByUid(string $uid): ?ProductType + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getProductTypeByUid($uid); + } + + /** + * @return ProductType[] + */ + public function getProductTypesByTaxCategoryId(int $taxCategoryId): array + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getProductTypesByTaxCategoryId($taxCategoryId); + } + + /** + * @return ProductType[] + */ + public function getProductTypesByShippingCategoryId(int $shippingCategoryId): array + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getProductTypesByShippingCategoryId($shippingCategoryId); + } + + /** + * @return ProductTypeSite[] + */ + public function getProductTypeSites(int $productTypeId): array + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->getProductTypeSites($productTypeId); + } + + public function saveProductType(ProductType $productType, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->saveProductType($productType, $runValidation); + } + + public function handleChangedProductType(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->handleChangedProductType(new \CraftCms\Cms\ProjectConfig\Events\ItemUpdated($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + public function deleteProductTypeById(int $id): bool + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->deleteProductTypeById($id); + } + + public function handleDeletedProductType(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->handleDeletedProductType(new \CraftCms\Cms\ProjectConfig\Events\ItemRemoved($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + public function pruneDeletedSite(DeleteSiteEvent $event): void + { + app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->pruneDeletedSite(new \CraftCms\Cms\Site\Events\SiteDeleted(site: $event->site)); + } + + public function isProductTypeTemplateValid(ProductType $productType, int $siteId): bool + { + return app(\CraftCms\Commerce\Product\ProductType\ProductTypes::class)->isProductTypeTemplateValid($productType, $siteId); + } + + public static function registerEvents(): void + { + Event::listen(ProductTypeSaving::class, static function(ProductTypeSaving $event) { + $legacy = Plugin::getInstance()->getProductTypes(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_SAVE_PRODUCTTYPE)) { + $legacy->trigger(self::EVENT_BEFORE_SAVE_PRODUCTTYPE, $event); + } + }); + + Event::listen(ProductTypeSaved::class, static function(ProductTypeSaved $event) { + $legacy = Plugin::getInstance()->getProductTypes(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_SAVE_PRODUCTTYPE)) { + $legacy->trigger(self::EVENT_AFTER_SAVE_PRODUCTTYPE, $event); + } + }); + } +} diff --git a/src-yii2/services/Products.php b/src-yii2/services/Products.php new file mode 100644 index 0000000000..d9d5d4ceef --- /dev/null +++ b/src-yii2/services/Products.php @@ -0,0 +1,20 @@ +getProductById($id, $siteId, $criteria); + } +} diff --git a/src-yii2/services/Purchasables.php b/src-yii2/services/Purchasables.php new file mode 100644 index 0000000000..a0d9ffdd37 --- /dev/null +++ b/src-yii2/services/Purchasables.php @@ -0,0 +1,106 @@ +register()` instead. */ + public const EVENT_REGISTER_PURCHASABLE_ELEMENT_TYPES = 'registerPurchasableElementTypes'; + + /** + * @throws Throwable + */ + public function isPurchasableOutOfStockPurchasingAllowed(PurchasableInterface $purchasable, ?Order $order = null, ?User $currentUser = null): bool + { + return app(\CraftCms\Commerce\Purchasable\Purchasables::class)->isPurchasableOutOfStockPurchasingAllowed($purchasable, $order, $currentUser); + } + + public function isPurchasableAvailable(PurchasableInterface $purchasable, ?Order $order = null, ?User $currentUser = null): bool + { + return app(\CraftCms\Commerce\Purchasable\Purchasables::class)->isPurchasableAvailable($purchasable, $order, $currentUser); + } + + public function isPurchasableShippable(PurchasableInterface $purchasable, ?Order $order = null, ?User $currentUser = null): bool + { + return app(\CraftCms\Commerce\Purchasable\Purchasables::class)->isPurchasableShippable($purchasable, $order, $currentUser); + } + + public function updateStoreStockCache(PurchasableInterface $purchasable, bool $allSites = false): void + { + app(\CraftCms\Commerce\Purchasable\Purchasables::class)->updateStoreStockCache($purchasable, $allSites); + } + + /** + * @throws Throwable + */ + public function deletePurchasableById(int $purchasableId): bool + { + return app(\CraftCms\Commerce\Purchasable\Purchasables::class)->deletePurchasableById($purchasableId); + } + + public function getPurchasableById(int $purchasableId, ?int $siteId = null, int|false|null $forCustomer = null): ?PurchasableInterface + { + return app(\CraftCms\Commerce\Purchasable\Purchasables::class)->getPurchasableById($purchasableId, $siteId, $forCustomer); + } + + /** + * @return string[] + */ + public function getAllPurchasableElementTypes(): array + { + return app(\CraftCms\Commerce\Purchasable\Purchasables::class)->getAllPurchasableElementTypes(); + } + + /** @internal */ + public static function finalizeRegistrationEvents(): void + { + TypeRegistryCompatibility::reconcile(app(PurchasableTypes::class), \craft\commerce\Plugin::getInstance()->getPurchasables(), self::EVENT_REGISTER_PURCHASABLE_ELEMENT_TYPES); + } + + public static function registerEvents(): void + { + Event::listen(PurchasableOutOfStockPurchasesAllowedEvent::class, static function(PurchasableOutOfStockPurchasesAllowedEvent $event) { + $legacy = Plugin::getInstance()->getPurchasables(); + if ($legacy->hasEventHandlers(self::EVENT_PURCHASABLE_OUT_OF_STOCK_PURCHASES_ALLOWED)) { + $legacy->trigger(self::EVENT_PURCHASABLE_OUT_OF_STOCK_PURCHASES_ALLOWED, $event); + } + }); + + Event::listen(PurchasableAvailableEvent::class, static function(PurchasableAvailableEvent $event) { + $legacy = Plugin::getInstance()->getPurchasables(); + if ($legacy->hasEventHandlers(self::EVENT_PURCHASABLE_AVAILABLE)) { + $legacy->trigger(self::EVENT_PURCHASABLE_AVAILABLE, $event); + } + }); + + Event::listen(PurchasableShippableEvent::class, static function(PurchasableShippableEvent $event) { + $legacy = Plugin::getInstance()->getPurchasables(); + if ($legacy->hasEventHandlers(self::EVENT_PURCHASABLE_SHIPPABLE)) { + $legacy->trigger(self::EVENT_PURCHASABLE_SHIPPABLE, $event); + } + }); + } +} diff --git a/src-yii2/services/Sales.php b/src-yii2/services/Sales.php new file mode 100644 index 0000000000..41da0b0d6d --- /dev/null +++ b/src-yii2/services/Sales.php @@ -0,0 +1,73 @@ +canUseSales(); + } + + public function getSaleById(int $id): ?Sale + { + return app(\CraftCms\Commerce\Promotion\Sales::class)->getSaleById($id); + } + + /** + * @return Sale[] + */ + public function getAllSales(): array + { + return app(\CraftCms\Commerce\Promotion\Sales::class)->getAllSales(); + } + + /** + * @return Sale[] + */ + public function getSalesForPurchasable(PurchasableInterface $purchasable, ?Order $order = null): array + { + return app(\CraftCms\Commerce\Promotion\Sales::class)->getSalesForPurchasable($purchasable, $order); + } + + /** + * @return Sale[] + */ + public function getSalesRelatedToPurchasable(PurchasableInterface $purchasable): array + { + return app(\CraftCms\Commerce\Promotion\Sales::class)->getSalesRelatedToPurchasable($purchasable); + } + + public function getSalePriceForPurchasable(PurchasableInterface $purchasable, ?Order $order = null): float + { + return app(\CraftCms\Commerce\Promotion\Sales::class)->getSalePriceForPurchasable($purchasable, $order); + } + + public function matchPurchasableAndSale(PurchasableInterface $purchasable, Sale $sale, ?Order $order = null): bool + { + return app(\CraftCms\Commerce\Promotion\Sales::class)->matchPurchasableAndSale($purchasable, $sale, $order); + } + + public function saveSale(Sale $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Promotion\Sales::class)->saveSale($model, $runValidation); + } + + public function reorderSales(array $ids): bool + { + return app(\CraftCms\Commerce\Promotion\Sales::class)->reorderSales($ids); + } + + public function deleteSaleById(int $id): bool + { + return app(\CraftCms\Commerce\Promotion\Sales::class)->deleteSaleById($id); + } +} diff --git a/src-yii2/services/ShippingCategories.php b/src-yii2/services/ShippingCategories.php new file mode 100644 index 0000000000..5992bd0988 --- /dev/null +++ b/src-yii2/services/ShippingCategories.php @@ -0,0 +1,67 @@ + + */ + public function getAllShippingCategories(?int $storeId = null, bool $withTrashed = false): Collection + { + return app(\CraftCms\Commerce\Shipping\ShippingCategories::class)->getAllShippingCategories($storeId, $withTrashed); + } + + /** + * @return array + */ + public function getAllShippingCategoriesAsList(?int $storeId = null): array + { + return app(\CraftCms\Commerce\Shipping\ShippingCategories::class)->getAllShippingCategoriesAsList($storeId); + } + + public function getShippingCategoryById(int $shippingCategoryId, ?int $storeId = null): ?ShippingCategory + { + return app(\CraftCms\Commerce\Shipping\ShippingCategories::class)->getShippingCategoryById($shippingCategoryId, $storeId); + } + + public function getShippingCategoryByHandle(string $shippingCategoryHandle, ?int $storeId = null): ?ShippingCategory + { + return app(\CraftCms\Commerce\Shipping\ShippingCategories::class)->getShippingCategoryByHandle($shippingCategoryHandle, $storeId); + } + + public function getDefaultShippingCategory(int $storeId): ShippingCategory + { + return app(\CraftCms\Commerce\Shipping\ShippingCategories::class)->getDefaultShippingCategory($storeId); + } + + public function saveShippingCategory(ShippingCategory $shippingCategory, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingCategories::class)->saveShippingCategory($shippingCategory, $runValidation); + } + + public function deleteShippingCategoryById(int $id): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingCategories::class)->deleteShippingCategoryById($id); + } + + /** + * @return array + */ + public function getShippingCategoriesByProductTypeId(int $productTypeId): array + { + return app(\CraftCms\Commerce\Shipping\ShippingCategories::class)->getShippingCategoriesByProductTypeId($productTypeId); + } + + public function clearCaches(): void + { + app(\CraftCms\Commerce\Shipping\ShippingCategories::class)->clearCaches(); + } +} diff --git a/src-yii2/services/ShippingMethods.php b/src-yii2/services/ShippingMethods.php new file mode 100644 index 0000000000..ea695901db --- /dev/null +++ b/src-yii2/services/ShippingMethods.php @@ -0,0 +1,83 @@ + + */ + public function getAllShippingMethods(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Shipping\ShippingMethods::class)->getAllShippingMethods($storeId); + } + + public function getShippingMethodByHandle(string $handle, ?int $storeId = null): ?ShippingMethod + { + return app(\CraftCms\Commerce\Shipping\ShippingMethods::class)->getShippingMethodByHandle($handle, $storeId); + } + + public function getShippingMethodById(int $id, ?int $storeId = null): ?ShippingMethod + { + return app(\CraftCms\Commerce\Shipping\ShippingMethods::class)->getShippingMethodById($id, $storeId); + } + + /** + * @return array + */ + public function getMatchingShippingMethods(Order $order): array + { + return app(\CraftCms\Commerce\Shipping\ShippingMethods::class)->getMatchingShippingMethods($order); + } + + public function getSerializedOrderForMatchingRules(Order $order): array + { + return app(\CraftCms\Commerce\Shipping\ShippingMethods::class)->getSerializedOrderForMatchingRules($order); + } + + public function getMatchingShippingRule(Order $order, ShippingMethodInterface $method): ?ShippingRuleInterface + { + return app(\CraftCms\Commerce\Shipping\ShippingMethods::class)->getMatchingShippingRule($order, $method); + } + + public function saveShippingMethod(ShippingMethod $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingMethods::class)->saveShippingMethod($model, $runValidation); + } + + public function deleteShippingMethodById(int $id): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingMethods::class)->deleteShippingMethodById($id); + } + + public function clearCache(): void + { + app(\CraftCms\Commerce\Shipping\ShippingMethods::class)->clearCache(); + } + + public static function registerEvents(): void + { + Event::listen(RegisterAvailableShippingMethodsEvent::class, static function(RegisterAvailableShippingMethodsEvent $event) { + $legacy = Plugin::getInstance()->getShippingMethods(); + if ($legacy->hasEventHandlers(self::EVENT_REGISTER_AVAILABLE_SHIPPING_METHODS)) { + $legacy->trigger(self::EVENT_REGISTER_AVAILABLE_SHIPPING_METHODS, $event); + } + }); + } +} diff --git a/src-yii2/services/ShippingRuleCategories.php b/src-yii2/services/ShippingRuleCategories.php new file mode 100644 index 0000000000..5428a43cab --- /dev/null +++ b/src-yii2/services/ShippingRuleCategories.php @@ -0,0 +1,39 @@ + + */ + public function getShippingRuleCategoriesByRuleId(int $ruleId): array + { + return app(\CraftCms\Commerce\Shipping\ShippingRuleCategories::class)->getShippingRuleCategoriesByRuleId($ruleId); + } + + /** + * @param int[] $ruleIds + * @return array> + */ + public function getShippingRuleCategoriesByRuleIds(array $ruleIds): array + { + return app(\CraftCms\Commerce\Shipping\ShippingRuleCategories::class)->getShippingRuleCategoriesByRuleIds($ruleIds); + } + + public function createShippingRuleCategory(ShippingRuleCategory $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingRuleCategories::class)->createShippingRuleCategory($model, $runValidation); + } + + public function deleteShippingRuleCategoryById(int $id): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingRuleCategories::class)->deleteShippingRuleCategoryById($id); + } +} diff --git a/src-yii2/services/ShippingRules.php b/src-yii2/services/ShippingRules.php new file mode 100644 index 0000000000..c0cc395e56 --- /dev/null +++ b/src-yii2/services/ShippingRules.php @@ -0,0 +1,49 @@ + + */ + public function getAllShippingRules(): Collection + { + return app(\CraftCms\Commerce\Shipping\ShippingRules::class)->getAllShippingRules(); + } + + /** + * @return Collection + */ + public function getAllShippingRulesByShippingMethodId(int $methodId): Collection + { + return app(\CraftCms\Commerce\Shipping\ShippingRules::class)->getAllShippingRulesByShippingMethodId($methodId); + } + + public function getShippingRuleById(int $id): ?ShippingRule + { + return app(\CraftCms\Commerce\Shipping\ShippingRules::class)->getShippingRuleById($id); + } + + public function saveShippingRule(ShippingRule $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingRules::class)->saveShippingRule($model, $runValidation); + } + + public function reorderShippingRules(array $ids): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingRules::class)->reorderShippingRules($ids); + } + + public function deleteShippingRuleById(int $id): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingRules::class)->deleteShippingRuleById($id); + } +} diff --git a/src-yii2/services/ShippingZones.php b/src-yii2/services/ShippingZones.php new file mode 100644 index 0000000000..13e941ab03 --- /dev/null +++ b/src-yii2/services/ShippingZones.php @@ -0,0 +1,36 @@ + + */ + public function getAllShippingZones(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Shipping\ShippingZones::class)->getAllShippingZones($storeId); + } + + public function getShippingZoneById(int $id, ?int $storeId = null): ?ShippingAddressZone + { + return app(\CraftCms\Commerce\Shipping\ShippingZones::class)->getShippingZoneById($id, $storeId); + } + + public function saveShippingZone(ShippingAddressZone $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingZones::class)->saveShippingZone($model, $runValidation); + } + + public function deleteShippingZoneById(int $id): bool + { + return app(\CraftCms\Commerce\Shipping\ShippingZones::class)->deleteShippingZoneById($id); + } +} diff --git a/src-yii2/services/StoreSettings.php b/src-yii2/services/StoreSettings.php new file mode 100644 index 0000000000..995dbefca1 --- /dev/null +++ b/src-yii2/services/StoreSettings.php @@ -0,0 +1,35 @@ +getStoreSettingsById($id); + } + + /** + * @return Collection + */ + public function getAllStoreSettings(): Collection + { + return app(\CraftCms\Commerce\Store\StoreSettings::class)->getAllStoreSettings(); + } + + /** + * @throws InvalidConfigException + */ + public function saveStoreSettings(StoreSettingsModel $storeSettings): bool + { + return app(\CraftCms\Commerce\Store\StoreSettings::class)->saveStoreSettings($storeSettings); + } +} diff --git a/src-yii2/services/Stores.php b/src-yii2/services/Stores.php new file mode 100644 index 0000000000..7dece3c472 --- /dev/null +++ b/src-yii2/services/Stores.php @@ -0,0 +1,219 @@ +getCurrentStore(); + } + + /** + * @return Collection + */ + public function getAllStores(): Collection + { + return app(\CraftCms\Commerce\Store\Stores::class)->getAllStores(); + } + + public function getStoreById(int $id): ?Store + { + return app(\CraftCms\Commerce\Store\Stores::class)->getStoreById($id); + } + + public function getStoreByUid(string $uid): ?Store + { + return app(\CraftCms\Commerce\Store\Stores::class)->getStoreByUid($uid); + } + + public function getStoreBySiteId(int $siteId): ?Store + { + return app(\CraftCms\Commerce\Store\Stores::class)->getStoreBySiteId($siteId); + } + + public function getStoreByHandle(string $handle): ?Store + { + return app(\CraftCms\Commerce\Store\Stores::class)->getStoreByHandle($handle); + } + + /** + * @return Collection + */ + public function getStoresByUserId(int $userId): Collection + { + return app(\CraftCms\Commerce\Store\Stores::class)->getStoresByUserId($userId); + } + + public function saveStore(Store $store, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Store\Stores::class)->saveStore($store, $runValidation); + } + + public function deleteStoreById(int $storeId): bool + { + return app(\CraftCms\Commerce\Store\Stores::class)->deleteStoreById($storeId); + } + + public function deleteStore(Store $store): bool + { + return app(\CraftCms\Commerce\Store\Stores::class)->deleteStore($store); + } + + /** + * @throws Throwable + */ + public function handleChangedStore(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Store\Stores::class)->handleChangedStore(new \CraftCms\Cms\ProjectConfig\Events\ItemUpdated($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + /** + * @throws Throwable + */ + public function handleDeletedStore(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Store\Stores::class)->handleDeletedStore(new \CraftCms\Cms\ProjectConfig\Events\ItemRemoved($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + public function refreshStores(): void + { + app(\CraftCms\Commerce\Store\Stores::class)->refreshStores(); + } + + public function getPrimaryStore(): ?Store + { + return app(\CraftCms\Commerce\Store\Stores::class)->getPrimaryStore(); + } + + /** + * @param int[] $ids + */ + public function reorderStores(array $ids): bool + { + return app(\CraftCms\Commerce\Store\Stores::class)->reorderStores($ids); + } + + /** + * @return Collection + */ + public function getAllSitesForStore(Store $store): Collection + { + return app(\CraftCms\Commerce\Store\Stores::class)->getAllSitesForStore($store); + } + + /** + * @return Collection + */ + public function getAllSiteStores(): Collection + { + return app(\CraftCms\Commerce\Store\Stores::class)->getAllSiteStores(); + } + + public function getSiteIdsAvailableForAssignmentToNewStores(): array + { + return app(\CraftCms\Commerce\Store\Stores::class)->getSiteIdsAvailableForAssignmentToNewStores(); + } + + /** + * @throws Throwable + */ + public function saveSiteStore(SiteStore $siteStore, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Store\Stores::class)->saveSiteStore($siteStore, $runValidation); + } + + /** + * @throws Throwable + */ + public function handleChangedSiteStore(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Store\Stores::class)->handleChangedSiteStore(new \CraftCms\Cms\ProjectConfig\Events\ItemUpdated($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + /** + * @throws Throwable + */ + public function handleDeletedSiteStore(ConfigEvent $event): void + { + app(\CraftCms\Commerce\Store\Stores::class)->handleDeletedSiteStore(new \CraftCms\Cms\ProjectConfig\Events\ItemRemoved($event->path, $event->oldValue, $event->newValue, $event->tokenMatches)); + } + + + public static function registerEvents(): void + { + Event::listen(StoreSaving::class, static function(StoreSaving $event) { + $legacy = Plugin::getInstance()->getStores(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_SAVE_STORE)) { + $legacy->trigger(self::EVENT_BEFORE_SAVE_STORE, $event); + } + }); + + Event::listen(StoreSaved::class, static function(StoreSaved $event) { + $legacy = Plugin::getInstance()->getStores(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_SAVE_STORE)) { + $legacy->trigger(self::EVENT_AFTER_SAVE_STORE, $event); + } + }); + + Event::listen(StoreDeleting::class, static function(StoreDeleting $event) { + $legacy = Plugin::getInstance()->getStores(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_DELETE_STORE)) { + $legacy->trigger(self::EVENT_BEFORE_DELETE_STORE, $event); + } + }); + + Event::listen(StoreDeleteApplying::class, static function(StoreDeleteApplying $event) { + $legacy = Plugin::getInstance()->getStores(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_APPLY_STORE_DELETE)) { + $legacy->trigger(self::EVENT_BEFORE_APPLY_STORE_DELETE, $event); + } + }); + + Event::listen(StoreDeleted::class, static function(StoreDeleted $event) { + $legacy = Plugin::getInstance()->getStores(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_DELETE_STORE)) { + $legacy->trigger(self::EVENT_AFTER_DELETE_STORE, $event); + } + }); + } +} diff --git a/src-yii2/services/TaxCategories.php b/src-yii2/services/TaxCategories.php new file mode 100644 index 0000000000..948278b333 --- /dev/null +++ b/src-yii2/services/TaxCategories.php @@ -0,0 +1,61 @@ +getAllTaxCategories($withTrashed); + } + + public function getTaxCategoryById(int $taxCategoryId): ?TaxCategory + { + return app(\CraftCms\Commerce\Tax\TaxCategories::class)->getTaxCategoryById($taxCategoryId); + } + + public function getTaxCategoryByHandle(string $taxCategoryHandle): ?TaxCategory + { + return app(\CraftCms\Commerce\Tax\TaxCategories::class)->getTaxCategoryByHandle($taxCategoryHandle); + } + + /** + * @return array + */ + public function getAllTaxCategoriesAsList(): array + { + return app(\CraftCms\Commerce\Tax\TaxCategories::class)->getAllTaxCategoriesAsList(); + } + + public function getDefaultTaxCategory(): TaxCategory + { + return app(\CraftCms\Commerce\Tax\TaxCategories::class)->getDefaultTaxCategory(); + } + + public function saveTaxCategory(TaxCategory $taxCategory, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Tax\TaxCategories::class)->saveTaxCategory($taxCategory, $runValidation); + } + + public function deleteTaxCategoryById(int $id): bool + { + return app(\CraftCms\Commerce\Tax\TaxCategories::class)->deleteTaxCategoryById($id); + } + + /** + * @return array + */ + public function getTaxCategoriesByProductTypeId(int $productTypeId): array + { + return app(\CraftCms\Commerce\Tax\TaxCategories::class)->getTaxCategoriesByProductTypeId($productTypeId); + } +} diff --git a/src-yii2/services/TaxRates.php b/src-yii2/services/TaxRates.php new file mode 100644 index 0000000000..4c071027d2 --- /dev/null +++ b/src-yii2/services/TaxRates.php @@ -0,0 +1,52 @@ + + */ + public function getAllTaxRates(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Tax\TaxRates::class)->getAllTaxRates($storeId); + } + + /** + * @return Collection + */ + public function getAllEnabledTaxRates(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Tax\TaxRates::class)->getAllEnabledTaxRates($storeId); + } + + /** + * @return Collection + */ + public function getTaxRatesByTaxZoneId(int $taxZoneId, ?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Tax\TaxRates::class)->getTaxRatesByTaxZoneId($taxZoneId, $storeId); + } + + public function getTaxRateById(int $id, ?int $storeId = null): ?TaxRate + { + return app(\CraftCms\Commerce\Tax\TaxRates::class)->getTaxRateById($id, $storeId); + } + + public function saveTaxRate(TaxRate $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Tax\TaxRates::class)->saveTaxRate($model, $runValidation); + } + + public function deleteTaxRateById(int $id): bool + { + return app(\CraftCms\Commerce\Tax\TaxRates::class)->deleteTaxRateById($id); + } +} diff --git a/src-yii2/services/TaxZones.php b/src-yii2/services/TaxZones.php new file mode 100644 index 0000000000..3d07a26157 --- /dev/null +++ b/src-yii2/services/TaxZones.php @@ -0,0 +1,36 @@ + + */ + public function getAllTaxZones(?int $storeId = null): Collection + { + return app(\CraftCms\Commerce\Tax\TaxZones::class)->getAllTaxZones($storeId); + } + + public function getTaxZoneById(int $id, ?int $storeId = null): ?TaxAddressZone + { + return app(\CraftCms\Commerce\Tax\TaxZones::class)->getTaxZoneById($id, $storeId); + } + + public function saveTaxZone(TaxAddressZone $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Tax\TaxZones::class)->saveTaxZone($model, $runValidation); + } + + public function deleteTaxZoneById(int $id): bool + { + return app(\CraftCms\Commerce\Tax\TaxZones::class)->deleteTaxZoneById($id); + } +} diff --git a/src-yii2/services/Taxes.php b/src-yii2/services/Taxes.php new file mode 100644 index 0000000000..c8a7640fd0 --- /dev/null +++ b/src-yii2/services/Taxes.php @@ -0,0 +1,153 @@ + + */ + public function getTaxIdValidators(): Collection + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->getTaxIdValidators(); + } + + /** + * @return Collection + */ + public function getEnabledTaxIdValidators(): Collection + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->getEnabledTaxIdValidators(); + } + + public function getEngine(): NewTaxEngineInterface + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->getEngine(); + } + + public function taxAdjusterClass(): string + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->taxAdjusterClass(); + } + + public function viewTaxCategories(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->viewTaxCategories(); + } + + public function createTaxCategories(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->createTaxCategories(); + } + + public function editTaxCategories(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->editTaxCategories(); + } + + public function deleteTaxCategories(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->deleteTaxCategories(); + } + + public function taxCategoryActionHtml(): string + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->taxCategoryActionHtml(); + } + + public function viewTaxZones(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->viewTaxZones(); + } + + public function editTaxZones(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->editTaxZones(); + } + + public function viewTaxRates(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->viewTaxRates(); + } + + public function editTaxRates(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->editTaxRates(); + } + + public function cpTaxNavSubItems(): array + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->cpTaxNavSubItems(); + } + + public function createTaxZones(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->createTaxZones(); + } + + public function deleteTaxZones(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->deleteTaxZones(); + } + + public function taxZoneActionHtml(): string + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->taxZoneActionHtml(); + } + + public function createTaxRates(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->createTaxRates(); + } + + public function deleteTaxRates(): bool + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->deleteTaxRates(); + } + + public function taxRateActionHtml(): string + { + return app(\CraftCms\Commerce\Tax\Taxes::class)->taxRateActionHtml(); + } + + public static function registerEvents(): void + { + Event::listen(TaxIdValidatorsEvent::class, static function(TaxIdValidatorsEvent $event) { + $legacy = Plugin::getInstance()->getTaxes(); + if ($legacy->hasEventHandlers(self::EVENT_REGISTER_TAX_ID_VALIDATORS)) { + $legacy->trigger(self::EVENT_REGISTER_TAX_ID_VALIDATORS, $event); + } + }); + + Event::listen(TaxEngineEvent::class, static function(TaxEngineEvent $event) { + $legacy = Plugin::getInstance()->getTaxes(); + if ($legacy->hasEventHandlers(self::EVENT_REGISTER_TAX_ENGINE)) { + $legacy->trigger(self::EVENT_REGISTER_TAX_ENGINE, $event); + } + }); + } +} diff --git a/src-yii2/services/Transactions.php b/src-yii2/services/Transactions.php new file mode 100644 index 0000000000..f8b414735b --- /dev/null +++ b/src-yii2/services/Transactions.php @@ -0,0 +1,127 @@ +canCaptureTransaction($transaction); + } + + public function canRefundTransaction(Transaction $transaction): bool + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->canRefundTransaction($transaction); + } + + public function refundableAmountForTransaction(Transaction $transaction): float + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->refundableAmountForTransaction($transaction); + } + + public function createTransaction(?Order $order = null, ?Transaction $parentTransaction = null, ?string $typeOverride = null): Transaction + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->createTransaction($order, $parentTransaction, $typeOverride); + } + + public function deleteTransactionById(int $id): bool + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->deleteTransactionById($id); + } + + /** + * @return Transaction[] + */ + public function getAllTopLevelTransactionsByOrderId(int $orderId): array + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->getAllTopLevelTransactionsByOrderId($orderId); + } + + /** + * @return Transaction[] + */ + public function getAllTransactionsByOrderId(int $orderId): array + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->getAllTransactionsByOrderId($orderId); + } + + /** + * @return Transaction[] + */ + public function getChildrenByTransactionId(int $transactionId): array + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->getChildrenByTransactionId($transactionId); + } + + public function getTransactionByHash(string $hash): ?Transaction + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->getTransactionByHash($hash); + } + + public function getTransactionByReferenceAndStatus(string $reference, string $status): ?Transaction + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->getTransactionByReferenceAndStatus($reference, $status); + } + + public function getTransactionByReference(string $reference): ?Transaction + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->getTransactionByReference($reference); + } + + public function getTransactionById(int $id): ?Transaction + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->getTransactionById($id); + } + + public function isTransactionSuccessful(Transaction $transaction): bool + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->isTransactionSuccessful($transaction); + } + + public function saveTransaction(Transaction $model, bool $runValidation = true): bool + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->saveTransaction($model, $runValidation); + } + + /** + * @param Order[] $orders + * @return Order[] + */ + public function eagerLoadTransactionsForOrders(array $orders): array + { + return app(\CraftCms\Commerce\Payment\Transactions::class)->eagerLoadTransactionsForOrders($orders); + } + + public static function registerEvents(): void + { + Event::listen(TransactionCreated::class, static function(TransactionCreated $event) { + $legacy = Plugin::getInstance()->getTransactions(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_CREATE_TRANSACTION)) { + $legacy->trigger(self::EVENT_AFTER_CREATE_TRANSACTION, $event); + } + }); + + Event::listen(TransactionSaved::class, static function(TransactionSaved $event) { + $legacy = Plugin::getInstance()->getTransactions(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_SAVE_TRANSACTION)) { + $legacy->trigger(self::EVENT_AFTER_SAVE_TRANSACTION, $event); + } + }); + } +} diff --git a/src-yii2/services/Transfers.php b/src-yii2/services/Transfers.php new file mode 100644 index 0000000000..e5340d6e23 --- /dev/null +++ b/src-yii2/services/Transfers.php @@ -0,0 +1,11 @@ +getAllVariantsByProductId($productId, $siteId, $includeDisabled); + } + + public function getVariantById(int $variantId, ?int $siteId = null): ?Variant + { + return app(\CraftCms\Commerce\Product\Variant\Variants::class)->getVariantById($variantId, $siteId); + } + + /** + * @throws InvalidConfigException + */ + public function getVariantGqlContentArguments(): array + { + return app(\CraftCms\Commerce\Product\Variant\Variants::class)->getVariantGqlContentArguments(); + } +} diff --git a/src-yii2/services/Vat.php b/src-yii2/services/Vat.php new file mode 100644 index 0000000000..48ee575f0d --- /dev/null +++ b/src-yii2/services/Vat.php @@ -0,0 +1,16 @@ +isValidVatId($vatId); + } +} diff --git a/src-yii2/services/Webhooks.php b/src-yii2/services/Webhooks.php new file mode 100644 index 0000000000..6dbb7e31cb --- /dev/null +++ b/src-yii2/services/Webhooks.php @@ -0,0 +1,47 @@ +processWebhook($gateway); + } + + public static function registerEvents(): void + { + Event::listen(WebhookProcessing::class, static function(WebhookProcessing $event) { + $legacy = Plugin::getInstance()->getWebhooks(); + if ($legacy->hasEventHandlers(self::EVENT_BEFORE_PROCESS_WEBHOOK)) { + $legacy->trigger(self::EVENT_BEFORE_PROCESS_WEBHOOK, $event); + } + }); + + Event::listen(WebhookProcessed::class, static function(WebhookProcessed $event) { + $legacy = Plugin::getInstance()->getWebhooks(); + if ($legacy->hasEventHandlers(self::EVENT_AFTER_PROCESS_WEBHOOK)) { + $legacy->trigger(self::EVENT_AFTER_PROCESS_WEBHOOK, $event); + } + }); + } +} diff --git a/src-yii2/stats/AverageOrderTotal.php b/src-yii2/stats/AverageOrderTotal.php new file mode 100644 index 0000000000..f0c9c7e546 --- /dev/null +++ b/src-yii2/stats/AverageOrderTotal.php @@ -0,0 +1,11 @@ + 0 %} + {% redirect 'commerce/products' %} +{% endif %} + +{% if currentUser.can('commerce-manageOrders') %} + {% redirect 'commerce/orders' %} +{% endif %} + +{% if craft.commerce.productTypes.viewableProductTypes|length > 0 %} + {% redirect 'commerce/products' %} +{% endif %} + +{% if currentUser.can('commerce-manageStoreSettings') %} + {% redirect "commerce/store-management" %} +{% endif %} + +{% if currentUser.can('commerce-manageInventoryStockLevels') %} + {% redirect "commerce/inventory" %} +{% endif %} + +{% if currentUser.can('commerce-managePromotions') %} + {% redirect "commerce/store-management/#{primaryStore.handle}/discounts" %} +{% endif %} + +{% if currentUser.can('commerce-manageShipping') %} + {% redirect "commerce/store-management/#{primaryStore.handle}/shippingmethods" %} +{% endif %} + +{% if currentUser.can('commerce-manageTaxes') %} + {% redirect "commerce/store-management/#{primaryStore.handle}/taxrates" %} +{% endif %} + +{% exit 403 %} diff --git a/src/templates/inventory-locations/_deleteModal.twig b/src-yii2/templates/inventory-locations/_deleteModal.twig similarity index 100% rename from src/templates/inventory-locations/_deleteModal.twig rename to src-yii2/templates/inventory-locations/_deleteModal.twig diff --git a/src-yii2/templates/inventory-locations/_edit.twig b/src-yii2/templates/inventory-locations/_edit.twig new file mode 100644 index 0000000000..1c5735c784 --- /dev/null +++ b/src-yii2/templates/inventory-locations/_edit.twig @@ -0,0 +1,11 @@ +{% namespace 'inventoryLocationAddress' %} +{{ extraFieldsHtml|raw }} +{% endnamespace %} + +{{ form|raw }} + +{% hook "cp.commerce.inventoryLocation.edit" %} + +{% if not inventoryLocation.id %} +{% js "new Craft.HandleGenerator('##{'name'|namespaceInputId}', '##{'handle'|namespaceInputId}');" %} +{% endif %} diff --git a/src/templates/inventory-locations/_index.twig b/src-yii2/templates/inventory-locations/_index.twig similarity index 100% rename from src/templates/inventory-locations/_index.twig rename to src-yii2/templates/inventory-locations/_index.twig diff --git a/src/templates/inventory-locations/_sidebar.twig b/src-yii2/templates/inventory-locations/_sidebar.twig similarity index 100% rename from src/templates/inventory-locations/_sidebar.twig rename to src-yii2/templates/inventory-locations/_sidebar.twig diff --git a/src/templates/orders/_edit.twig b/src-yii2/templates/orders/_edit.twig similarity index 100% rename from src/templates/orders/_edit.twig rename to src-yii2/templates/orders/_edit.twig diff --git a/src/templates/orders/_history.twig b/src-yii2/templates/orders/_history.twig similarity index 100% rename from src/templates/orders/_history.twig rename to src-yii2/templates/orders/_history.twig diff --git a/src/templates/orders/_paymentForms.twig b/src-yii2/templates/orders/_paymentForms.twig similarity index 100% rename from src/templates/orders/_paymentForms.twig rename to src-yii2/templates/orders/_paymentForms.twig diff --git a/src/templates/orders/_paymentmodal.twig b/src-yii2/templates/orders/_paymentmodal.twig similarity index 100% rename from src/templates/orders/_paymentmodal.twig rename to src-yii2/templates/orders/_paymentmodal.twig diff --git a/src/templates/orders/_transactions.twig b/src-yii2/templates/orders/_transactions.twig similarity index 100% rename from src/templates/orders/_transactions.twig rename to src-yii2/templates/orders/_transactions.twig diff --git a/src/templates/orders/includes/_capture.twig b/src-yii2/templates/orders/includes/_capture.twig similarity index 100% rename from src/templates/orders/includes/_capture.twig rename to src-yii2/templates/orders/includes/_capture.twig diff --git a/src/templates/orders/includes/_refund.twig b/src-yii2/templates/orders/includes/_refund.twig similarity index 100% rename from src/templates/orders/includes/_refund.twig rename to src-yii2/templates/orders/includes/_refund.twig diff --git a/src/templates/orders/modals/_fulfillmentModal.twig b/src-yii2/templates/orders/modals/_fulfillmentModal.twig similarity index 100% rename from src/templates/orders/modals/_fulfillmentModal.twig rename to src-yii2/templates/orders/modals/_fulfillmentModal.twig diff --git a/src/templates/prices/_index.twig b/src-yii2/templates/prices/_index.twig similarity index 100% rename from src/templates/prices/_index.twig rename to src-yii2/templates/prices/_index.twig diff --git a/src/templates/prices/_polling.twig b/src-yii2/templates/prices/_polling.twig similarity index 100% rename from src/templates/prices/_polling.twig rename to src-yii2/templates/prices/_polling.twig diff --git a/src/templates/prices/_status.twig b/src-yii2/templates/prices/_status.twig similarity index 100% rename from src/templates/prices/_status.twig rename to src-yii2/templates/prices/_status.twig diff --git a/src/templates/prices/_table.twig b/src-yii2/templates/prices/_table.twig similarity index 100% rename from src/templates/prices/_table.twig rename to src-yii2/templates/prices/_table.twig diff --git a/src/templates/promotions/index.twig b/src-yii2/templates/promotions/index.twig similarity index 100% rename from src/templates/promotions/index.twig rename to src-yii2/templates/promotions/index.twig diff --git a/src-yii2/templates/promotions/sales/_edit.twig b/src-yii2/templates/promotions/sales/_edit.twig new file mode 100644 index 0000000000..bd8eec9c68 --- /dev/null +++ b/src-yii2/templates/promotions/sales/_edit.twig @@ -0,0 +1,361 @@ +{% extends "commerce/_layouts/store-management" %} +{% set isIndex = false %} + +{% set crumbs = [ + { label: 'Commerce'|t('commerce'), url: url('commerce') }, + { label: "Store Management"|t('commerce'), url: url('commerce/store-management/#{storeHandle}') }, + { label: "Sales"|t('commerce'), url: url("commerce/store-management/#{storeHandle}/sales") }, +] %} + +{% set fullPageForm = true %} + +{% import "_includes/forms" as forms %} +{% import "commerce/_includes/forms/commerceForms" as commerceForms %} + +{% set mainFormAttributes = { + id: 'saleform', + method: 'post', + 'accept-charset': 'UTF-8' +} %} + +{% set formActions = [{ + label: 'Save and continue editing'|t('app'), + redirect: (isNewSale ? "commerce/store-management/#{storeHandle}/sales/{id}" : sale.getCpEditUrl())|hash, + retainScroll: true, + shortcut: true, +}] %} + +{% set actionClasses = "" %} +{% if (sale.getErrors('applyAmount') or sale.getErrors('apply')) %} + {% set actionClasses = "error" %} +{% endif %} + +{% set matchingItemsClasses = "" %} +{% if false %} + {% set matchingItemsClasses = "error" %} +{% endif %} + +{% set saleClasses = "" %} +{% if(sale.getErrors('name')) %} + {% set saleClasses = "error" %} +{% endif %} + +{% set tabs = { + sale: {'label':'Sale'|t('commerce'),'url':'#sale','class': saleClasses}, + matchingItems: {'label':'Matching Items'|t('commerce'),'url':'#matching-items'}, + conditions: {'label':'Conditions'|t('commerce'),'url':'#conditions'}, + actions: {'label':'Actions'|t('commerce'),'url':'#actions','class': actionClasses} +} %} + +{% hook "cp.commerce.sales.edit" %} + +{% block details %} + +
+ {{ forms.lightSwitchField({ + label: "Enable this sale"|t('commerce'), + id: 'enabled', + name: 'enabled', + value: 1, + on: sale.enabled, + checked: sale.enabled, + errors: sale.getErrors('enabled'), + instructions: 'Whether this sale should be available for use, regardless of other conditions.'|t('commerce') + }) }} +
+ + {% if sale and sale.id %} +
+
+
{{ "Created at"|t('app') }}
+
{{ sale.dateCreated|datetime('short') }}
+
+
+
{{ "Updated at"|t('app') }}
+
{{ sale.dateUpdated|datetime('short') }}
+
+
+ {% endif %} + + {% hook "cp.commerce.sales.edit.details" %} +{% endblock %} + +{% block content %} + + {{ redirectInput("commerce/store-management/#{storeHandle}/sales") }} + {% if sale.id %} + + + {% endif %} + +
+ {{ forms.textField({ + first: true, + label: "Name"|t('commerce'), + instructions: "What this sale will be called in the control panel."|t('commerce'), + id: 'name', + name: 'name', + value: sale.name, + errors: sale.getErrors('name'), + autofocus: true, + required: true, + }) }} + + {{ forms.textField({ + label: "Description"|t('commerce'), + instructions: "Sale description."|t('commerce'), + id: 'description', + name: 'description', + value: sale.description, + errors: sale.getErrors('description'), + }) }} + +
+ + + + + + + + {% hook "cp.commerce.sales.edit.content" %} +{% endblock %} + +{% js %} +$(function() { + $('#groups, #productTypes').selectize({ + plugins: ['remove_button'], + dropdownParent: 'body' + }); + + $("form").submit(function() { + $("input[name=ignorePrevious]").prop('disabled', false); + if ($("input[name=ignorePrevious]").prop('checked') == true) { + $("#ignorePrevious-field").css('opacity', 0.25); + } + }); + + $('select[name=apply]').change(function() { + + if (this.value == 'byPercent' || this.value == 'toPercent') { + $('#applyAmount-percent-symbol').removeClass('hidden'); + $('#applyAmount-currency-symbol').addClass('hidden'); + }else{ + $('#applyAmount-percent-symbol').addClass('hidden'); + $('#applyAmount-currency-symbol').removeClass('hidden'); + } + + if (this.value == 'toFlat' || this.value == 'toPercent') { + $('input[name=ignorePrevious]').prop('disabled', true); + $('#ignorePrevious').prop('disabled', true); + $('#ignorePrevious').addClass('disabled', true); + } + if (this.value != 'toFlat' && this.value != 'toPercent') { + $('input[name=ignorePrevious]').prop('disabled', false); + $('#ignorePrevious').prop('disabled', false); + $('#ignorePrevious').removeClass('disabled', true); + } + }); +}); +{% endjs %} diff --git a/src/templates/promotions/sales/index.twig b/src-yii2/templates/promotions/sales/index.twig similarity index 100% rename from src/templates/promotions/sales/index.twig rename to src-yii2/templates/promotions/sales/index.twig diff --git a/src/templates/settings/emails/_edit.twig b/src-yii2/templates/settings/emails/_edit.twig similarity index 100% rename from src/templates/settings/emails/_edit.twig rename to src-yii2/templates/settings/emails/_edit.twig diff --git a/src/templates/settings/emails/_previewError.twig b/src-yii2/templates/settings/emails/_previewError.twig similarity index 100% rename from src/templates/settings/emails/_previewError.twig rename to src-yii2/templates/settings/emails/_previewError.twig diff --git a/src-yii2/templates/settings/emails/index.twig b/src-yii2/templates/settings/emails/index.twig new file mode 100644 index 0000000000..ed72a29ea2 --- /dev/null +++ b/src-yii2/templates/settings/emails/index.twig @@ -0,0 +1,100 @@ +{% extends "commerce/_layouts/settings" %} +{% do view.registerAssetBundle('craft\\web\\assets\\admintable\\AdminTableAsset') -%} +{% do view.registerTranslations('commerce', [ + 'Bcc', + 'Name', + 'No emails exist yet.', + 'Preview', + 'Subject', + 'Template Path', + 'To', +]) %} + +{% set crumbs = [ + { label: 'Commerce'|t('commerce'), url: url('commerce') }, +] %} + +{% block actionButton %} + {% if not readOnly %} +
+ + +
+ {% endif %} +{% endblock %} + +{% block content %} + {% for store in stores %} + {% if stores|length > 1 %} +

{{ store.name }}

+ {% endif %} +
+ {% if not loop.last %}
{% endif %} + {% endfor %} +{% endblock %} + +{% for storeHandle, storeEmails in emails %} + {% set tableData = [] %} + {% for email in storeEmails %} + {% set tableData = tableData|merge([{ + id: email.id, + title: email.name|t('site'), + status: email.enabled ? true : false, + url: email.getCpEditUrl(), + subject: email.subject|t('site')|e, + to: email.recipientType == 'custom' ? email.to|e : 'Customer'|t('commerce')|e, + bcc: email.bcc|e, + template: email.templatePath|e, + preview: email.id ~ ':' ~ email.storeId, + }]) %} + {% endfor %} + + {% js %} + var columns = [ + { name: '__slot:title', title: Craft.t('commerce', 'Name') }, + { name: 'subject', title: Craft.t('commerce', 'Subject') }, + { name: 'to', title: Craft.t('commerce', 'To') }, + { name: 'bcc', title: Craft.t('commerce', 'Bcc') }, + { name: 'template', title: Craft.t('commerce', 'Template Path'), + callback: function(value) { + if (value) { + return ''+value+''; + } + + return ''; + } + }, + { name: 'preview', title: Craft.t('commerce', 'Preview'), + callback: function(value) { + if (value) { + return 'Preview'; + } + + return ''; + } + }, + ]; + + let {{ storeHandle }}Config = { + columns: columns, + fullPane: false, + container: '#emails-vue-admin-table-{{ storeHandle }}', + emptyMessage: Craft.t('commerce', 'No emails exist yet.'), + tableData: {{ tableData|json_encode|raw }}, + }; + + {% if not readOnly %} + {{ storeHandle }}Config['deleteAction'] = 'commerce/emails/delete'; + {% endif %} + + new Craft.VueAdminTable({{ storeHandle }}Config); + {% endjs %} +{% endfor %} \ No newline at end of file diff --git a/src-yii2/templates/settings/gateways/_edit.twig b/src-yii2/templates/settings/gateways/_edit.twig new file mode 100644 index 0000000000..7f98b3aa44 --- /dev/null +++ b/src-yii2/templates/settings/gateways/_edit.twig @@ -0,0 +1,147 @@ +{% extends "commerce/_layouts/cp" %} + +{% set crumbs = [ + { label: 'Commerce'|t('commerce'), url: url('commerce') }, + { label: 'Settings'|t('app'), url: url('commerce/settings'), ariaLabel: 'Commerce Settings'|t('commerce') }, + { label: "Gateways"|t('commerce'), url: url('commerce/settings/gateways') }, +] %} + +{% set selectedSubnavItem = 'settings' %} + +{% set fullPageForm = not readOnly %} + +{% if readOnly %} + {% set contentNotice = readOnlyNotice() %} +{% endif %} + +{% import "_includes/forms" as forms %} + +{% block content %} + {{ hiddenInput('id', gateway.id) }} + {{ actionInput('commerce/gateways/save') }} + {{ redirectInput("commerce/settings/gateways") }} + + {{ forms.textField({ + label: 'Name'|t('commerce'), + name: 'name', + id: 'name', + value : gateway.name, + required: true, + errors: gateway.getErrors('name'), + disabled: readOnly, + }) }} + + {{ forms.textField({ + label: 'Handle'|t('commerce'), + name: 'handle', + id: 'handle', + class: 'code', + value : gateway.handle, + required: true, + errors: gateway.getErrors('handle'), + disabled: readOnly, + }) }} + + {% if gateway.supportsWebhooks() %} + {{ forms.textField({ + label: "Webhook URL"|t('commerce'), + instructions: "The webhook URL for this gateway."|t('commerce'), + disabled: true, + value: gateway.webhookUrl, + disabled: readOnly, + }) }} + {% endif %} +
+ + {{ forms.selectField({ + first: true, + label: 'Gateway'|t('commerce'), + warning: (gateway.id ? "Changing this value may affect your ability to refund existing transactions."|t('commerce')), + id: 'type', + name: 'type', + options : gatewayOptions, + value : className(gateway), + required: true, + errors: gateway.getErrors('type') ?? null, + toggle: true, + disabled: readOnly, + }) }} + + + + {% for gatewayType in gatewayTypes %} + {% set isCurrent = (gatewayType == className(gateway)) %} + + + {% endfor %} + + {{ forms.booleanMenuField({ + label: "Enabled for customers to select during checkout?"|t('commerce'), + id: 'isFrontendEnabled', + name: 'isFrontendEnabled', + includeEnvVars: true, + value: gateway.isFrontendEnabled(false), + errors: gateway.getErrors('isFrontendEnabled'), + disabled: readOnly, + }) }} + +
+ {{ forms.field({ + label: 'Match Order'|t('commerce'), + instructions: 'Create rules that allow this gateway to match the order.'|t('commerce'), + errors: gateway.getErrors('orderCondition'), + }, orderConditionHtml|raw) }} + + {{ forms.field({ + label: 'Match Billing Address'|t('commerce'), + instructions: 'Create rules that allow this gateway to match the billing address.'|t('commerce'), + errors: gateway.getErrors('billingAddressCondition'), + }, billingAddressConditionHtml|raw) }} + + {{ forms.field({ + label: 'Match Shipping Address'|t('commerce'), + instructions: 'Create rules that allow this gateway to match the shipping address.'|t('commerce'), + errors: gateway.getErrors('shippingAddressCondition'), + }, shippingAddressConditionHtml|raw) }} + +{% endblock %} + +{% js %} + $(function() { + $('#type').change(function() { + $('.gateway-settings').hide().find('select, input, textarea').prop('disabled', true); + if($(this).val()) { + $('#gateway-' + $(this).val()).show().find('select, input, textarea').prop('disabled', false); + } + }).change(); + }); +{% endjs %} + +{% if gateway is not defined or not gateway.handle %} + {% js %} + new Craft.HandleGenerator('#name', '#handle'); + {% endjs %} +{% endif %} diff --git a/src/templates/settings/gateways/index.twig b/src-yii2/templates/settings/gateways/index.twig similarity index 100% rename from src/templates/settings/gateways/index.twig rename to src-yii2/templates/settings/gateways/index.twig diff --git a/src-yii2/templates/settings/general/index.twig b/src-yii2/templates/settings/general/index.twig new file mode 100644 index 0000000000..feeda0e7d6 --- /dev/null +++ b/src-yii2/templates/settings/general/index.twig @@ -0,0 +1,65 @@ +{# @var settings \craft\commerce\models\Settings #} +{% extends "commerce/_layouts/settings" %} + +{% set selectedTab = 'settings' %} +{% set fullPageForm = not readOnly %} + +{% set crumbs = [ + { label: 'Commerce'|t('commerce'), url: url('commerce') }, +] %} + +{% import "_includes/forms" as forms %} + +{% from _self import configWarning %} + +{% block content %} +

{{ "General Settings"|t('commerce') }}

+ + + + {% if not readOnly %} + {{ actionInput('commerce/settings/save-settings') }} + {{ redirectInput('commerce/settings/general') }} + {% endif %} + +

{{ 'Units'|t('commerce') }}

+ {{ forms.selectField({ + label: "Weight Unit"|t('commerce'), + instructions: "The unit of measurement that should be used when specifying product weights."|t('commerce'), + name: 'settings[weightUnits]', + value: settings.weightUnits, + options: settings.getWeightUnitsOptions(), + errors: settings.getErrors('weightUnits'), + required: true, + disabled: readOnly, + warning: configWarning('weightUnits', 'commerce'), + }) }} + + {{ forms.selectField({ + label: "Dimension Unit"|t('commerce'), + instructions: "The unit of measurement that should be used when specifying product dimensions."|t('commerce'), + name: 'settings[dimensionUnits]', + value: settings.dimensionUnits, + options: settings.getDimensionUnits(), + errors: settings.getErrors('dimensionUnits'), + required: true, + disabled: readOnly, + warning: configWarning('dimensionUnits', 'commerce'), + }) }} + +
+

{{ 'Control Panel Settings'|t('commerce') }}

+ {{ forms.selectField({ + label: "Default View"|t('commerce'), + instructions: "Default Commerce control panel view. If the user does not have permission it will fall back to a location they can access."|t('commerce'), + name: 'settings[defaultView]', + value: settings.defaultView, + options: settings.getDefaultViewOptions(), + errors: settings.getErrors('defaultView'), + disabled: readOnly, + required: true, + warning: configWarning('defaultView', 'commerce'), + }) }} + + +{% endblock %} diff --git a/src/templates/settings/index.twig b/src-yii2/templates/settings/index.twig similarity index 100% rename from src/templates/settings/index.twig rename to src-yii2/templates/settings/index.twig diff --git a/src/templates/settings/lineitemstatuses/_edit.twig b/src-yii2/templates/settings/lineitemstatuses/_edit.twig similarity index 100% rename from src/templates/settings/lineitemstatuses/_edit.twig rename to src-yii2/templates/settings/lineitemstatuses/_edit.twig diff --git a/src/templates/settings/lineitemstatuses/index.twig b/src-yii2/templates/settings/lineitemstatuses/index.twig similarity index 100% rename from src/templates/settings/lineitemstatuses/index.twig rename to src-yii2/templates/settings/lineitemstatuses/index.twig diff --git a/src/templates/settings/ordersettings/_edit.twig b/src-yii2/templates/settings/ordersettings/_edit.twig similarity index 100% rename from src/templates/settings/ordersettings/_edit.twig rename to src-yii2/templates/settings/ordersettings/_edit.twig diff --git a/src/templates/settings/orderstatuses/_edit.twig b/src-yii2/templates/settings/orderstatuses/_edit.twig similarity index 100% rename from src/templates/settings/orderstatuses/_edit.twig rename to src-yii2/templates/settings/orderstatuses/_edit.twig diff --git a/src/templates/settings/orderstatuses/index.twig b/src-yii2/templates/settings/orderstatuses/index.twig similarity index 100% rename from src/templates/settings/orderstatuses/index.twig rename to src-yii2/templates/settings/orderstatuses/index.twig diff --git a/src/templates/settings/pdfs/_edit.twig b/src-yii2/templates/settings/pdfs/_edit.twig similarity index 100% rename from src/templates/settings/pdfs/_edit.twig rename to src-yii2/templates/settings/pdfs/_edit.twig diff --git a/src/templates/settings/pdfs/index.twig b/src-yii2/templates/settings/pdfs/index.twig similarity index 100% rename from src/templates/settings/pdfs/index.twig rename to src-yii2/templates/settings/pdfs/index.twig diff --git a/src/templates/settings/producttypes/_edit.twig b/src-yii2/templates/settings/producttypes/_edit.twig similarity index 100% rename from src/templates/settings/producttypes/_edit.twig rename to src-yii2/templates/settings/producttypes/_edit.twig diff --git a/src/templates/settings/producttypes/index.twig b/src-yii2/templates/settings/producttypes/index.twig similarity index 100% rename from src/templates/settings/producttypes/index.twig rename to src-yii2/templates/settings/producttypes/index.twig diff --git a/src/templates/settings/stores/_edit.twig b/src-yii2/templates/settings/stores/_edit.twig similarity index 100% rename from src/templates/settings/stores/_edit.twig rename to src-yii2/templates/settings/stores/_edit.twig diff --git a/src/templates/settings/stores/_siteStore.twig b/src-yii2/templates/settings/stores/_siteStore.twig similarity index 100% rename from src/templates/settings/stores/_siteStore.twig rename to src-yii2/templates/settings/stores/_siteStore.twig diff --git a/src/templates/settings/stores/index.twig b/src-yii2/templates/settings/stores/index.twig similarity index 100% rename from src/templates/settings/stores/index.twig rename to src-yii2/templates/settings/stores/index.twig diff --git a/src-yii2/templates/store-management/discounts/_edit.twig b/src-yii2/templates/store-management/discounts/_edit.twig new file mode 100644 index 0000000000..47a2de29b3 --- /dev/null +++ b/src-yii2/templates/store-management/discounts/_edit.twig @@ -0,0 +1,639 @@ + +{% set fullPageForm = true %} + +{% import "_includes/forms" as forms %} +{% import "commerce/_includes/forms/commerceForms" as commerceForms %} + +{% set mainFormAttributes = { + id: 'discountform', + method: 'post', + 'accept-charset': 'UTF-8' +} %} + +{% set formActions = [ + { + label: 'Save and continue editing'|t('app'), + redirect: (isNewDiscount ? 'commerce/store-management/#{storeHandle}/discounts/{id}' : discount.getCpEditUrl())|hash, + retainScroll: true, + shortcut: true, + }] +%} + +{% set couponsTable = { + name: 'coupons', + id: 'coupons-table', + cols: { + id: { + type: 'singleline', + heading: 'id'|t('app'), + class: 'hidden', + }, + code: { + type: 'singleline', + heading: 'Code'|t('commerce'), + }, + uses: { + type: 'singleline', + heading: 'Uses'|t('commerce'), + }, + maxUses: { + type: 'singleline', + heading: 'Max Uses'|t('commerce'), + info: 'Leave blank for unlimited uses.'|t('commerce'), + }, + }, + defaultValues: { uses: 0 } +} %} + +{% hook "cp.commerce.discounts.edit" %} + +{% block content %} + {% set formAttributes = { + id: 'discountform', + method: 'post', + 'accept-charset': 'UTF-8', + data: { + saveshortcut: true, + 'saveshortcut-redirect': "commerce/store-management/#{storeHandle}/discounts"|hash, + 'confirm-unload': true + }, + } %} + + {{ hiddenInput('storeId', discount.storeId) }} + {% if discount.id %} + + + {% endif %} + +
+ {{ forms.textField({ + first: true, + label: "Name"|t('commerce'), + instructions: "What this discount will be called in the control panel."|t('commerce'), + id: 'name', + name: 'name', + value: discount.name, + errors: discount.getErrors('name'), + autofocus: true, + required: true, + }) }} + + {{ forms.textField({ + label: "Description"|t('commerce'), + instructions: "Discount description."|t('commerce'), + id: 'description', + name: 'description', + value: discount.description, + errors: discount.getErrors('description'), + }) }} + + {% hook "cp.commerce.discount.edit" %} +
+ + + + + + + + + + {% hook "cp.commerce.discounts.edit.content" %} +{% endblock %} + +{% js %} +$(function() { + + $('#code').on('keyup blur', function(event) { + if (this.value.length === 0) { + $('#coupon-fields').addClass('hidden'); + } else { + $('#coupon-fields').removeClass('hidden'); + } + }); + + function disableShippingSwitch() { + $('#hasFreeShippingForMatchingItems').data('lightswitch').turnOff(); + $('input[name="hasFreeShippingForMatchingItems"]').prop("disabled", true); + $('#hasFreeShippingForMatchingItems').prop("disabled", true); + $("#hasFreeShippingForMatchingItems").addClass("disabled"); + } + + function enableShippingSwitch() { + $('input[name="hasFreeShippingForMatchingItems"]').prop("disabled", false); + $('#hasFreeShippingForMatchingItems').prop("disabled", false); + $("#hasFreeShippingForMatchingItems").removeClass("disabled"); + } + + if ($('input[name="hasFreeShippingForOrder"]').val() == 1) { + disableShippingSwitch(); + } + + $('#hasFreeShippingForOrder').click(function() { + if ($('input[name="hasFreeShippingForOrder"]').val() == 1) { + disableShippingSwitch(); + } else { + enableShippingSwitch(); + } + }); + + $('.clear-btn.discount-clear-use').click(function(event) { + var $this = $(this); + var $spinner = $($this.data('spinner')); + var $field = $($this.data('field')); + var type = $this.data('type'); + var r = confirm(Craft.t('commerce', 'Are you sure you want to clear this discount usage counter?')); + + if (r == true) { + $spinner.toggleClass('hidden'); + $.ajax({ + type: "POST", + dataType: 'json', + headers: { + "X-CSRF-Token": '{{ craft.app.request.csrfToken }}', + }, + url: '', + data: { + 'action' : 'commerce/discounts/clear-discount-uses', + 'id': '{{ discount.id ?? '' }}', + 'type': type + }, + success: function(data){ + $spinner.toggleClass('hidden'); + $field.val(''); + Craft.cp.displayNotice(Craft.t('commerce', 'Counter has been cleared.')); + $this.attr('disabled', 'disabled').prop('disabled', 'disabled'); + } + }); + } + }); + + new Craft.Commerce.Coupons('#commerce-coupons', { + couponFormat: "{{ discount.couponFormat|e('js') }}", + table: { + name: "{{ couponsTable.name|namespaceInputName|e('js') }}", + cols: {{ couponsTable.cols|json_encode|raw }}, + defaultValues: {{ couponsTable.defaultValues|json_encode|raw }} + }, + }); +}); +{% endjs %} diff --git a/src/templates/store-management/discounts/_sidebar.twig b/src-yii2/templates/store-management/discounts/_sidebar.twig similarity index 100% rename from src/templates/store-management/discounts/_sidebar.twig rename to src-yii2/templates/store-management/discounts/_sidebar.twig diff --git a/src/templates/store-management/discounts/index.twig b/src-yii2/templates/store-management/discounts/index.twig similarity index 100% rename from src/templates/store-management/discounts/index.twig rename to src-yii2/templates/store-management/discounts/index.twig diff --git a/src/templates/store-management/general/_edit.twig b/src-yii2/templates/store-management/general/_edit.twig similarity index 100% rename from src/templates/store-management/general/_edit.twig rename to src-yii2/templates/store-management/general/_edit.twig diff --git a/src/templates/store-management/paymentcurrencies/_edit.twig b/src-yii2/templates/store-management/paymentcurrencies/_edit.twig similarity index 100% rename from src/templates/store-management/paymentcurrencies/_edit.twig rename to src-yii2/templates/store-management/paymentcurrencies/_edit.twig diff --git a/src/templates/store-management/paymentcurrencies/index.twig b/src-yii2/templates/store-management/paymentcurrencies/index.twig similarity index 100% rename from src/templates/store-management/paymentcurrencies/index.twig rename to src-yii2/templates/store-management/paymentcurrencies/index.twig diff --git a/src/templates/store-management/pricing-rules/_actions-fields.twig b/src-yii2/templates/store-management/pricing-rules/_actions-fields.twig similarity index 100% rename from src/templates/store-management/pricing-rules/_actions-fields.twig rename to src-yii2/templates/store-management/pricing-rules/_actions-fields.twig diff --git a/src-yii2/templates/store-management/pricing-rules/_edit.twig b/src-yii2/templates/store-management/pricing-rules/_edit.twig new file mode 100644 index 0000000000..2cf7097ae3 --- /dev/null +++ b/src-yii2/templates/store-management/pricing-rules/_edit.twig @@ -0,0 +1,89 @@ +{% import "_includes/forms" as forms %} +{% import "commerce/_includes/forms/commerceForms" as commerceForms %} + +{% if catalogPricingRule.id %} + {{ hiddenInput('id', catalogPricingRule.id) }} +{% endif %} +{{ hiddenInput('storeId', catalogPricingRule.storeId) }} + +
+ {{ forms.textField({ + first: true, + label: "Name"|t('commerce'), + instructions: "What this catalog pricing rule will be called in the control panel."|t('commerce'), + id: 'name', + name: 'name', + value: catalogPricingRule.name, + errors: catalogPricingRule.getErrors('name'), + autofocus: true, + required: true, + }) }} + + {{ forms.textField({ + label: "Description"|t('commerce'), + instructions: "Catalog pricing rule description."|t('commerce'), + id: 'description', + name: 'description', + value: catalogPricingRule.description, + errors: catalogPricingRule.getErrors('description'), + }) }} +
+ + + + + + {% hook "cp.commerce.catalogPricingRules.edit.content" %} \ No newline at end of file diff --git a/src/templates/store-management/pricing-rules/_sidebar.twig b/src-yii2/templates/store-management/pricing-rules/_sidebar.twig similarity index 100% rename from src/templates/store-management/pricing-rules/_sidebar.twig rename to src-yii2/templates/store-management/pricing-rules/_sidebar.twig diff --git a/src/templates/store-management/pricing-rules/_slideout.twig b/src-yii2/templates/store-management/pricing-rules/_slideout.twig similarity index 91% rename from src/templates/store-management/pricing-rules/_slideout.twig rename to src-yii2/templates/store-management/pricing-rules/_slideout.twig index 82c6b33a7e..1f278eee1b 100644 --- a/src/templates/store-management/pricing-rules/_slideout.twig +++ b/src-yii2/templates/store-management/pricing-rules/_slideout.twig @@ -36,15 +36,11 @@ errors: catalogPricingRule.getErrors('dateTo'), }) }} - {% set customerConditionInput %} - {{ catalogPricingRule.customerCondition.getBuilderHtml()|raw }} - {% endset %} - {{ forms.field({ id: 'customerCondition', label: 'Match Customer'|t('commerce'), errors: catalogPricingRule.getErrors('customerCondition') - }, customerConditionInput) }} + }, customerConditionHtml|raw) }}
\n
\n
\n
    \n
  • \n
    \n \n \n \n \n \n \n \n
    \n \n \n \n
    \n \n
    \n
  • \n \n
\n
\n
\n \n \n
\n
\n
\n {{ lineItem.subtotalAsCurrency }}\n
\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n
\n {{ lineItem.totalAsCurrency }}\n
\n
\n
\n
\n \n \n
\n {{\n $options.filters.t('Cancel', 'commerce')\n }}\n {{\n $options.filters.t('Done', 'commerce')\n }}\n
\n
\n\n
\n
\n
\n

{{ lineItem.description }}

\n

{{ 'Line Item' | t('commerce') }}

\n {{\n lineItem.snapshot\n }}\n
\n

\n {{ 'Adjustments' | t('commerce') }}\n

\n \n
\n

\n {{ adjustment.name\n }}\n - {{ adjustment.description }}\n

\n
\n {{ adjustment.type }}\n
\n {{\n adjustment.sourceSnapshot\n }}\n
\n
\n \n
\n
\n
\n {{\n $options.filters.t('Close', 'commerce')\n }}\n
\n
\n
\n
\n
\n
\n\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItem.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LineItem.vue?vue&type=template&id=48cd9035\"\nimport script from \"./LineItem.vue?vue&type=script&lang=js\"\nexport * from \"./LineItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./LineItem.vue?vue&type=style&index=0&id=48cd9035&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItems.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItems.vue?vue&type=script&lang=js\"","\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"line-item\"},[_c('div',{staticClass:\"absolute line-item-bg\",class:{\n 'highlight-line-item': _vm.highlightLineItem,\n 'error-bg': _vm.hasLineItemErrors(_vm.lineItemKey),\n }}),_vm._v(\" \"),_c('div',{staticClass:\"relative\"},[_c('order-block',{staticClass:\"order-flex order-box-sizing\"},[_c('div',{staticClass:\"w-1/4\"},[(\n _vm.editing &&\n _vm.editMode &&\n _vm.lineItem.type &&\n _vm.lineItem.type.value === _vm.lineItemTypes.Custom.value\n )?_c('div',[_c('field',{attrs:{\"label\":_vm.$options.filters.t('Description', 'commerce')},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.description),expression:\"description\"}],staticClass:\"text\",class:{\n error: _vm.getErrors(\n 'lineItems.' +\n _vm.lineItemKey +\n '.description'\n ).length,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"10\"},domProps:{\"value\":(_vm.description)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.description=$event.target.value}}})]}}],null,false,106977694)})],1):_c('order-title',[(_vm.lineItem.purchasableCpEditUrl)?_c('a',{attrs:{\"href\":_vm.lineItem.purchasableCpEditUrl}},[_vm._v(\"\\n \"+_vm._s(_vm.lineItem.description)+\"\\n \")]):_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.lineItem.description)+\"\\n \")])]),_vm._v(\" \"),_c('div',{class:{\n 'mt-s':\n _vm.editing &&\n _vm.editMode &&\n _vm.lineItem.type &&\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value,\n }},[(\n _vm.editing &&\n _vm.editMode &&\n _vm.lineItem.type &&\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value\n )?[_c('field',{attrs:{\"label\":_vm.$options.filters.t('SKU', 'commerce')},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sku),expression:\"sku\"}],staticClass:\"text\",class:{\n error: _vm.getErrors(\n 'lineItems.' + _vm.lineItemKey + '.sku'\n ).length,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"4\"},domProps:{\"value\":(_vm.sku)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.sku=$event.target.value}}})]}}],null,false,3393044256)})]:_c('code',{staticClass:\"extralight\"},[_vm._v(_vm._s(_vm.lineItem.sku))])],2),_vm._v(\" \"),_c('div',{staticClass:\"my-1\"},[_c('line-item-status',{attrs:{\"line-item\":_vm.lineItem,\"editing\":_vm.editing && _vm.editMode},on:{\"change\":_vm.updateLineItemStatusId}})],1),_vm._v(\" \"),(_vm.canEdit)?_c('div',[(!_vm.editMode)?_c('btn-link',{on:{\"click\":function($event){return _vm.enableEditMode()}}},[_vm._v(_vm._s(_vm._f(\"t\")('Edit','commerce')))]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',[_c('btn-link',{on:{\"click\":function($event){return _vm.openSnapshotModal()}}},[_vm._v(_vm._s(_vm._f(\"t\")('Snapshots','commerce')))])],1),_vm._v(\" \"),(\n _vm.canEdit &&\n (_vm.totalCommittedStock === 0 ||\n _vm.lineItem.fulfilledTotalQuantity < 1)\n )?_c('div',[_c('btn-link',{attrs:{\"button-class\":\"btn-link btn-link--danger\"},on:{\"click\":_vm.removeLineItem}},[_vm._v(_vm._s(_vm._f(\"t\")('Remove','commerce')))])],1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"w-3/4\"},[_c('div',{staticClass:\"order-flex pb\"},[_c('ul',{staticClass:\"line-item-section line-item-price\"},[_c('li',{staticClass:\"order-flex order-flex-wrap\"},[_c('div',{staticClass:\"order-flex\"},[(\n _vm.editing &&\n _vm.editMode &&\n (_vm.recalculationMode === 'none' ||\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value)\n )?[_c('field',{attrs:{\"label\":_vm.$options.filters.t(\n 'Promotional Price',\n 'commerce'\n )},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.promotionalPrice),expression:\"promotionalPrice\"}],ref:\"promotionalPrice\",staticClass:\"text\",class:{\n error: _vm.getErrors(\n 'lineItems.' +\n _vm.lineItemKey +\n '.promotionalPrice'\n ).length,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"10\"},domProps:{\"value\":(_vm.promotionalPrice)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.promotionalPrice=$event.target.value}}})]}}],null,false,2878233695)})]:[_c('label',{staticClass:\"light\",attrs:{\"for\":\"salePrice\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Sale Price','commerce')))]),_vm._v(\" \"),_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.lineItem.salePriceAsCurrency)+\"\\n \")])],_vm._v(\" \"),(\n _vm.editing &&\n _vm.editMode &&\n (_vm.recalculationMode === 'none' ||\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value)\n )?[_c('div',[_c('field',{attrs:{\"label\":_vm.$options.filters.t(\n 'Price',\n 'commerce'\n )},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.price),expression:\"price\"}],ref:\"price\",staticClass:\"text\",class:{\n error: _vm.getErrors(\n 'lineItems.' +\n _vm.lineItemKey +\n '.price'\n ).length,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"10\"},domProps:{\"value\":(_vm.price)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.price=$event.target.value}}})]}}],null,false,3265702783)})],1)]:_vm._e()],2)]),_vm._v(\" \"),(_vm.lineItem.onPromotion)?[_c('li',[_c('span',{staticClass:\"light\"},[_vm._v(_vm._s(_vm._f(\"t\")('Original Price','commerce')))]),_vm._v(\" \"),_c('del',[_vm._v(_vm._s(_vm.lineItem.priceAsCurrency))])]),_vm._v(\" \"),_c('li',[_c('span',{staticClass:\"light\"},[_vm._v(_vm._s(_vm._f(\"t\")('Promotional Amount','commerce')))]),_vm._v(\"\\n \"+_vm._s(_vm.lineItem.promotionalAmountAsCurrency)+\"\\n \")])]:_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"line-item-section\"},[_c('div',{staticClass:\"order-flex\"},[(_vm.editing && _vm.editMode)?[_c('field',{attrs:{\"label\":_vm.$options.filters.t(\n 'Quantity',\n 'commerce'\n )},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.qty),expression:\"qty\"}],staticClass:\"text\",class:{\n error: _vm.getErrors(\n 'lineItems.' +\n _vm.lineItemKey +\n '.qty'\n ).length,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"3\"},domProps:{\"value\":(_vm.qty)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.qty=$event.target.value}}})]}}],null,false,2189795926)})]:[_c('span',[_vm._v(_vm._s(_vm.lineItem.qty))])]],2)]),_vm._v(\" \"),_c('div',{staticClass:\"order-flex-grow text-right\"},[_vm._v(\"\\n \"+_vm._s(_vm.lineItem.subtotalAsCurrency)+\"\\n \")])]),_vm._v(\" \"),_c('div',[(\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value\n )?_c('order-block',{staticClass:\"order-flex\"},[_c('line-item-property',{attrs:{\"editing\":_vm.editing && _vm.editMode,\"line-item\":_vm.lineItem,\"attribute\":'hasFreeShipping',\"label\":_vm.$options.filters.t(\n 'Has Free Shipping',\n 'commerce'\n ),\"classes\":{'order-flex': true}},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}})],1):_vm._e(),_vm._v(\" \"),(\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value\n )?_c('order-block',{staticClass:\"order-flex\"},[_c('line-item-property',{attrs:{\"editing\":_vm.editing && _vm.editMode,\"line-item\":_vm.lineItem,\"attribute\":'isShippable',\"label\":_vm.$options.filters.t(\n 'Is Shippable',\n 'commerce'\n ),\"classes\":\"order-flex line-item-no-margin\"},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}},[_c('field',{staticStyle:{\"margin-top\":\"0\",\"margin-left\":\"auto\",\"width\":\"60%\"},attrs:{\"label\":_vm.fieldLabel(\n _vm.$options.filters.t(\n 'Shipping Category',\n 'commerce'\n )\n ),\"classes\":\"order-flex\",\"input-class\":\"flex-grow\"}},[(_vm.editing && _vm.editMode)?[_c('select-input',{attrs:{\"label\":\"name\",\"options\":_vm.shippingCategoryOptions,\"filterable\":true,\"placeholder\":_vm.shippingCategory},model:{value:(_vm.shippingCategoryId),callback:function ($$v) {_vm.shippingCategoryId=$$v},expression:\"shippingCategoryId\"}})]:[_vm._v(\"\\n \"+_vm._s(_vm.shippingCategory)+\"\\n \")]],2)],1)],1):_vm._e(),_vm._v(\" \"),(\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value\n )?_c('order-block',{staticClass:\"order-flex\"},[_c('line-item-property',{attrs:{\"editing\":_vm.editing && _vm.editMode,\"line-item\":_vm.lineItem,\"attribute\":'isPromotable',\"label\":_vm.$options.filters.t(\n 'Is Promotable',\n 'commerce'\n ),\"classes\":{'order-flex': true}},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}})],1):_vm._e(),_vm._v(\" \"),(\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value\n )?_c('order-block',{staticClass:\"order-flex\"},[_c('line-item-property',{attrs:{\"editing\":_vm.editing && _vm.editMode,\"line-item\":_vm.lineItem,\"attribute\":'isTaxable',\"label\":_vm.$options.filters.t('Is Taxable', 'commerce'),\"classes\":\"order-flex line-item-no-margin\"},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}},[_c('field',{staticStyle:{\"margin-top\":\"0\",\"margin-left\":\"auto\",\"width\":\"60%\"},attrs:{\"label\":_vm.fieldLabel(\n _vm.$options.filters.t(\n 'Tax Category',\n 'commerce'\n )\n ),\"classes\":\"order-flex\",\"input-class\":\"flex-grow\"}},[(_vm.editing && _vm.editMode)?[_c('select-input',{attrs:{\"label\":\"name\",\"options\":_vm.taxCategoryOptions,\"filterable\":true,\"placeholder\":_vm.taxCategory},model:{value:(_vm.taxCategoryId),callback:function ($$v) {_vm.taxCategoryId=$$v},expression:\"taxCategoryId\"}})]:[_vm._v(\"\\n \"+_vm._s(_vm.taxCategory)+\"\\n \")]],2)],1)],1):_vm._e(),_vm._v(\" \"),_c('line-item-adjustments',{attrs:{\"order-id\":_vm.orderId,\"line-item\":_vm.lineItem,\"editing\":_vm.editing && _vm.editMode,\"recalculation-mode\":_vm.recalculationMode,\"errorPrefix\":'lineItems.' + _vm.lineItemKey + '.adjustments.'},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}}),_vm._v(\" \"),_c('line-item-options',{attrs:{\"line-item\":_vm.lineItem,\"editing\":_vm.editing && _vm.editMode},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}}),_vm._v(\" \"),_c('line-item-notes',{attrs:{\"line-item\":_vm.lineItem,\"editing\":_vm.editing && _vm.editMode},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}}),_vm._v(\" \"),_c('order-block',{staticClass:\"text-right\"},[_c('div',[_c('strong',[_vm._v(_vm._s(_vm.lineItem.totalAsCurrency))])])])],1)])]),_vm._v(\" \"),(_vm.editing && _vm.editMode)?_c('div',{staticClass:\"line-item-buttons pb text-right\"},[_c('div',{staticClass:\"buttons right\"},[_c('btn-link',{attrs:{\"button-class\":\"btn\"},on:{\"click\":_vm.cancelEdit}},[_vm._v(_vm._s(_vm.$options.filters.t('Cancel', 'commerce')))]),_vm._v(\" \"),_c('btn-link',{attrs:{\"button-class\":\"btn secondary\"},on:{\"click\":_vm.applyEdit}},[_vm._v(_vm._s(_vm.$options.filters.t('Done', 'commerce')))])],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\"},[_c('div',{ref:\"snapshots\",staticClass:\"order-edit-modal modal fitted\"},[_c('div',{staticClass:\"body\"},[_c('h2',[_vm._v(_vm._s(_vm.lineItem.description))]),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm._f(\"t\")('Line Item','commerce')))]),_vm._v(\" \"),_c('snapshot',{attrs:{\"show\":true}},[_vm._v(_vm._s(_vm.lineItem.snapshot))]),_vm._v(\" \"),_c('hr'),_vm._v(\" \"),(_vm.lineItem.adjustments.length)?_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Adjustments','commerce'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.lineItem.adjustments),function(adjustment,key){return [_c('div',{key:key},[_c('h4',{staticClass:\"m-0\"},[_vm._v(\"\\n \"+_vm._s(adjustment.name)),(adjustment.description)?_c('span',[_vm._v(\"\\n - \"+_vm._s(adjustment.description))]):_vm._e()]),_vm._v(\" \"),_c('h5',{staticClass:\"adjustment-type mt-tiny\"},[_vm._v(\"\\n \"+_vm._s(adjustment.type)+\"\\n \")]),_vm._v(\" \"),_c('snapshot',{attrs:{\"show\":true}},[_vm._v(_vm._s(adjustment.sourceSnapshot))]),_vm._v(\" \"),_c('hr')],1)]})],2),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('div',{staticClass:\"buttons right\"},[_c('btn-link',{attrs:{\"button-class\":\"btn\"},on:{\"click\":function($event){return _vm.closeSnapshotModal()}}},[_vm._v(_vm._s(_vm.$options.filters.t('Close', 'commerce')))])],1)])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./LineItems.vue?vue&type=template&id=714e330f\"\nimport script from \"./LineItems.vue?vue&type=script&lang=js\"\nexport * from \"./LineItems.vue?vue&type=script&lang=js\"\nimport style0 from \"./LineItems.vue?vue&type=style&index=0&id=714e330f&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.lineItems.length > 0)?_c('div',{staticClass:\"order-flex order-box-sizing\"},[_c('div',{staticClass:\"line-items-heading line-items-heading--details orderedit-border-color\"},[_c('h4',{staticClass:\"extralight\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Item', 'commerce'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"line-items-heading line-items-heading--price orderedit-border-color\"},[_c('h4',{staticClass:\"extralight\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Unit Price', 'commerce'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"line-items-heading line-items-heading--quantity orderedit-border-color\"},[_c('h4',{staticClass:\"extralight\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Quantity', 'commerce'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"line-items-heading line-items-heading--total orderedit-border-color text-right order-flex-grow\"},[_c('h4',{staticClass:\"extralight\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Total', 'commerce'))+\"\\n \")])])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.lineItems),function(lineItem,lineItemKey){return [_c('line-item',{key:lineItem.uid,attrs:{\"recalculation-mode\":_vm.recalculationMode,\"line-item\":lineItem,\"line-item-key\":lineItemKey,\"editing\":_vm.editing},on:{\"updateLineItem\":function($event){return _vm.updateLineItem($event, lineItemKey)},\"removeLineItem\":function($event){return _vm.removeLineItem(lineItemKey)}}})]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const __WEBPACK_NAMESPACE_OBJECT__ = axios;","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuetable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuetable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Vuetable.vue?vue&type=template&id=49edeb66&scoped=true\"\nimport script from \"./Vuetable.vue?vue&type=script&lang=js\"\nexport * from \"./Vuetable.vue?vue&type=script&lang=js\"\nimport style0 from \"./Vuetable.vue?vue&type=style&index=0&id=49edeb66&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49edeb66\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isFixedHeader)?_c('div',[_c('div',{staticClass:\"vuetable-head-wrapper\"},[_c('table',{class:['vuetable', _vm.css.tableClass, _vm.css.tableHeaderClass]},[_c('thead',[_c('tr',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__checkbox')?_c('th',{key:fieldIndex,class:['vuetable-th-checkbox-'+_vm.trackBy, field.titleClass],style:({width: field.width})},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checkCheckboxesState(field.name)},on:{\"change\":function($event){return _vm.toggleAllCheckboxes(field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__component')?_c('th',{key:fieldIndex,class:['vuetable-th-component-'+_vm.trackBy, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__slot')?_c('th',{key:fieldIndex,class:['vuetable-th-slot-'+_vm.extractArgs(field.name), field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__sequence')?_c('th',{key:fieldIndex,class:['vuetable-th-sequence', field.titleClass || ''],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e(),_vm._v(\" \"),(_vm.notIn(_vm.extractName(field.name), ['__sequence', '__checkbox', '__component', '__slot']))?_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass || ''],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e()]:[_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),attrs:{\"id\":'_' + field.name},domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}})]]:_vm._e()]}),_vm._v(\" \"),(_vm.scrollVisible)?_c('th',{staticClass:\"vuetable-gutter-col\",style:({width: _vm.scrollBarWidth})}):_vm._e()],2)])])]),_vm._v(\" \"),_c('div',{staticClass:\"vuetable-body-wrapper\",style:({height: _vm.tableHeight})},[_c('table',{class:['vuetable', _vm.css.tableClass, _vm.css.tableBodyClass]},[_c('colgroup',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[_c('col',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass],style:({width: field.width}),attrs:{\"id\":'_col_' + field.name}})]:_vm._e()]})],2),_vm._v(\" \"),_c('tbody',{staticClass:\"vuetable-body\"},[_vm._l((_vm.tableData),function(item,itemIndex){return [_c('tr',{key:itemIndex,class:_vm.onRowClass(item, itemIndex),attrs:{\"item-index\":itemIndex,\"render\":_vm.onRowChanged(item)},on:{\"click\":function($event){return _vm.onRowClicked(item, $event)},\"dblclick\":function($event){return _vm.onRowDoubleClicked(item, $event)}}},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__sequence')?_c('td',{key:fieldIndex,class:['vuetable-sequence', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderSequence(itemIndex))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__handle')?_c('td',{key:fieldIndex,class:['vuetable-handle', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderIconTag(['handle-icon', _vm.css.handleIcon]))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__checkbox')?_c('td',{key:fieldIndex,class:['vuetable-checkboxes', field.dataClass]},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.rowSelected(item, field.name)},on:{\"change\":function($event){return _vm.toggleCheckbox(item, field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__component')?_c('td',{key:fieldIndex,class:['vuetable-component', field.dataClass]},[_c(_vm.extractArgs(field.name),{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex,\"row-field\":field.sortField}})],1):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__slot')?_c('td',{key:fieldIndex,class:['vuetable-slot', field.dataClass]},[_vm._t(_vm.extractArgs(field.name),null,{\"rowData\":item,\"rowIndex\":itemIndex,\"rowField\":field.sortField})],2):_vm._e()]:[_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.renderNormalField(field, item))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}})]]:_vm._e()]})],2),_vm._v(\" \"),(_vm.useDetailRow)?[_c('transition',{key:itemIndex,attrs:{\"name\":_vm.detailRowTransition}},[(_vm.isVisibleDetailRow(item[_vm.trackBy]))?_c('tr',{class:[_vm.css.detailRowClass],on:{\"click\":function($event){return _vm.onDetailRowClick(item, $event)}}},[_c('td',{attrs:{\"colspan\":_vm.countVisibleFields}},[_c(_vm.detailRowComponent,{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex}})],1)]):_vm._e()])]:_vm._e()]}),_vm._v(\" \"),(_vm.displayEmptyDataRow)?[_c('tr',[_c('td',{staticClass:\"vuetable-empty-result\",attrs:{\"colspan\":_vm.countVisibleFields},domProps:{\"innerHTML\":_vm._s(_vm.noDataTemplate)}})])]:_vm._e(),_vm._v(\" \"),(_vm.lessThanMinRows)?_vm._l((_vm.blankRows),function(i){return _c('tr',{key:i,staticClass:\"blank-row\"},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?_c('td',{key:fieldIndex},[_vm._v(\" \")]):_vm._e()]})],2)}):_vm._e()],2)])])]):_c('table',{class:['vuetable', _vm.css.tableClass]},[_c('thead',[_c('tr',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__checkbox')?_c('th',{key:fieldIndex,class:['vuetable-th-checkbox-'+_vm.trackBy, field.titleClass],style:({width: field.width})},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checkCheckboxesState(field.name)},on:{\"change\":function($event){return _vm.toggleAllCheckboxes(field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__component')?_c('th',{key:fieldIndex,class:['vuetable-th-component-'+_vm.trackBy, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__slot')?_c('th',{key:fieldIndex,class:['vuetable-th-slot-'+_vm.extractArgs(field.name), field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__sequence')?_c('th',{key:fieldIndex,class:['vuetable-th-sequence', field.titleClass || '', _vm.sortClass(field)],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e(),_vm._v(\" \"),(_vm.notIn(_vm.extractName(field.name), ['__sequence', '__checkbox', '__component', '__slot']))?_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass || '', _vm.sortClass(field)],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e()]:[_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),attrs:{\"id\":'_' + field.name},domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}})]]:_vm._e()]})],2)]),_vm._v(\" \"),_c('tbody',{staticClass:\"vuetable-body\"},[_vm._l((_vm.tableData),function(item,itemIndex){return [_c('tr',{key:itemIndex,class:_vm.onRowClass(item, itemIndex),attrs:{\"item-index\":itemIndex,\"render\":_vm.onRowChanged(item)},on:{\"dblclick\":function($event){return _vm.onRowDoubleClicked(item, $event)},\"click\":function($event){return _vm.onRowClicked(item, $event)}}},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__sequence')?_c('td',{key:fieldIndex,class:['vuetable-sequence', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderSequence(itemIndex))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__handle')?_c('td',{key:fieldIndex,class:['vuetable-handle', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderIconTag(['handle-icon', _vm.css.handleIcon]))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__checkbox')?_c('td',{key:fieldIndex,class:['vuetable-checkboxes', field.dataClass]},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.rowSelected(item, field.name)},on:{\"change\":function($event){return _vm.toggleCheckbox(item, field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__component')?_c('td',{key:fieldIndex,class:['vuetable-component', field.dataClass]},[_c(_vm.extractArgs(field.name),{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex,\"row-field\":field.sortField}})],1):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__slot')?_c('td',{key:fieldIndex,class:['vuetable-slot', field.dataClass]},[_vm._t(_vm.extractArgs(field.name),null,{\"rowData\":item,\"rowIndex\":itemIndex,\"rowField\":field.sortField})],2):_vm._e()]:[(_vm.hasCallback(field))?_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.callCallback(field, item))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}}):_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.getObjectValue(item, field.name, ''))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}})]]:_vm._e()]})],2),_vm._v(\" \"),(_vm.useDetailRow)?[_c('transition',{key:itemIndex,attrs:{\"name\":_vm.detailRowTransition}},[(_vm.isVisibleDetailRow(item[_vm.trackBy]))?_c('tr',{class:[_vm.css.detailRowClass],on:{\"click\":function($event){return _vm.onDetailRowClick(item, $event)}}},[_c('td',{attrs:{\"colspan\":_vm.countVisibleFields}},[_c(_vm.detailRowComponent,{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex}})],1)]):_vm._e()])]:_vm._e()]}),_vm._v(\" \"),(_vm.displayEmptyDataRow)?[_c('tr',[_c('td',{staticClass:\"vuetable-empty-result\",attrs:{\"colspan\":_vm.countVisibleFields},domProps:{\"innerHTML\":_vm._s(_vm.noDataTemplate)}})])]:_vm._e(),_vm._v(\" \"),(_vm.lessThanMinRows)?_vm._l((_vm.blankRows),function(i){return _c('tr',{key:i,staticClass:\"blank-row\"},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?_c('td',{key:fieldIndex},[_vm._v(\" \")]):_vm._e()]})],2)}):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTablePagination.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTablePagination.vue?vue&type=script&lang=js\"","\n\n\n\n\n","var render, staticRenderFns\nimport script from \"./VuetablePaginationMixin.vue?vue&type=script&lang=js\"\nexport * from \"./VuetablePaginationMixin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n","import { render, staticRenderFns } from \"./AdminTablePagination.vue?vue&type=template&id=7daf5286\"\nimport script from \"./AdminTablePagination.vue?vue&type=script&lang=js\"\nexport * from \"./AdminTablePagination.vue?vue&type=script&lang=js\"\nimport style0 from \"./AdminTablePagination.vue?vue&type=style&index=0&id=7daf5286&prod&land=scss&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.tablePagination)?_c('div',{staticClass:\"vue-admin-table-pagination flex pagination\"},[_c('div',{staticClass:\"page-link prev-page\",class:[_vm.isOnFirstPage ? 'disabled' : ''],attrs:{\"title\":\"Previous Page\"},on:{\"click\":function($event){return _vm.loadPage('prev')}}}),_vm._v(\" \"),_c('div',{staticClass:\"page-link next-page\",class:[_vm.isOnLastPage ? 'disabled' : ''],attrs:{\"title\":\"Next Page\"},on:{\"click\":function($event){return _vm.loadPage('next')}}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.tablePagination),expression:\"tablePagination\"}],staticClass:\"page-info\"},[_vm._v(_vm._s(_vm.paginationLabel))])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableDeleteButton.vue?vue&type=template&id=7c08b60a&scoped=true\"\nimport script from \"./AdminTableDeleteButton.vue?vue&type=script&lang=js\"\nexport * from \"./AdminTableDeleteButton.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7c08b60a\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"delete icon\",class:{disabled: _vm.disabled},attrs:{\"title\":_vm._f(\"t\")('Delete','app'),\"role\":\"button\",\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleClick.apply(null, arguments)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableCheckbox.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableCheckbox.vue?vue&type=script&lang=js\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./AdminTableCheckbox.vue?vue&type=template&id=162a0ec4&scoped=true\"\nimport script from \"./AdminTableCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./AdminTableCheckbox.vue?vue&type=script&lang=js\"\nimport style0 from \"./AdminTableCheckbox.vue?vue&type=style&index=0&id=162a0ec4&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"162a0ec4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"checkbox\",class:{\n checked: _vm.isChecked,\n 'table-disabled-checkbox': !_vm.status,\n },attrs:{\"title\":_vm.title},on:{\"click\":function($event){$event.preventDefault();return _vm.handleClick.apply(null, arguments)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableActionButton.vue?vue&type=template&id=d71ad656&scoped=true\"\nimport script from \"./AdminTableActionButton.vue?vue&type=script&lang=js\"\nexport * from \"./AdminTableActionButton.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d71ad656\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{ref:\"form\",attrs:{\"method\":\"post\"}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.tokenName},domProps:{\"value\":_vm.tokenValue}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"action\"},domProps:{\"value\":_vm.action}}),_vm._v(\" \"),(_vm.param)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.param},domProps:{\"value\":_vm.value}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.ids),function(id,index){return _c('input',{key:index,attrs:{\"type\":\"hidden\",\"name\":\"ids[]\"},domProps:{\"value\":id}})}),_vm._v(\" \"),_c(_vm.isMenuButton ? 'div' : 'button',_vm._g({ref:\"button\",tag:\"component\",staticClass:\"btn\",class:{\n menubtn: _vm.isMenuButton,\n error: _vm.error,\n disabled: !_vm.enabled || _vm.buttonDisabled,\n },attrs:{\"data-icon\":_vm.icon,\"disabled\":_vm.buttonDisabled,\"type\":_vm.enabled && !_vm.isMenuButton && !_vm.ajax ? 'submit' : null}},\n _vm.enabled && !_vm.isMenuButton && _vm.ajax\n ? {click: _vm.handleClick(_vm.param, _vm.value, _vm.action, _vm.ajax)}\n : {}\n ),[_vm._v(_vm._s(_vm.label))]),_vm._v(\" \"),(_vm.isMenuButton)?_c('div',{staticClass:\"menu\"},[_vm._l((_vm.actionsList),function(actList,ind){return [_c('ul',{key:ind,staticClass:\"padded\"},_vm._l((actList),function(act,index){return _c('li',{key:index},[_c('a',{class:{\n error: act.error !== undefined && act.error,\n disabled:\n act.allowMultiple !== undefined &&\n !act.allowMultiple &&\n _vm.hasMultipleSelected,\n },attrs:{\"href\":\"#\",\"data-param\":act.param,\"data-value\":act.value,\"data-ajax\":act.ajax},on:{\"click\":function($event){$event.preventDefault();!(\n act.allowMultiple !== undefined &&\n !act.allowMultiple &&\n _vm.hasMultipleSelected\n )\n ? _vm.handleClick(act.param, act.value, act.action, act.ajax)\n : null}}},[(act.status)?_c('span',{class:'status ' + act.status}):_vm._e(),_vm._v(_vm._s(act.label)+\"\\n \")])])}),0),_vm._v(\" \"),(\n _vm.actionsList.length > 1 && ind != _vm.actionsList.length - 1 && ind != 0\n )?_c('hr',{key:ind}):_vm._e()]})],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableDetailRow.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableDetailRow.vue?vue&type=script&lang=js\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./AdminTableDetailRow.vue?vue&type=template&id=a3de9814\"\nimport script from \"./AdminTableDetailRow.vue?vue&type=script&lang=js\"\nexport * from \"./AdminTableDetailRow.vue?vue&type=script&lang=js\"\nimport style0 from \"./AdminTableDetailRow.vue?vue&type=style&index=0&id=a3de9814&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(\n _vm.rowData.detail.content &&\n (!_vm.rowData.detail.showAsList || _vm.rowData.detail.showAsList === undefined)\n )?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.rowData.detail.content)}}):_vm._e(),_vm._v(\" \"),(_vm.rowData.detail.content && _vm.rowData.detail.showAsList)?_c('div',_vm._l((_vm.listKeys),function(key){return _c('div',{key:key,staticClass:\"order-flex detail-list\",class:{'detail-list-bg': _vm.index % 2}},[_c('div',{staticClass:\"detail-list-key\"},[_vm._v(_vm._s(key)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"detail-list-value\"},[_vm._v(_vm._s(_vm.list[key]))])])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableButton.vue?vue&type=template&id=42027be6&scoped=true\"\nimport script from \"./AdminTableButton.vue?vue&type=script&lang=js\"\nexport * from \"./AdminTableButton.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42027be6\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{ref:\"button\",staticClass:\"btn\",class:_vm.buttonClass,attrs:{\"href\":_vm.linkHref,\"data-icon\":_vm.icon},on:{\"click\":_vm.handleClick}},[_vm._v(_vm._s(_vm.label))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableCopyTextButton.vue?vue&type=template&id=3433c78c&scoped=true\"\nimport script from \"./AdminTableCopyTextButton.vue?vue&type=script&lang=js\"\nexport * from \"./AdminTableCopyTextButton.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3433c78c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**!\n * Sortable 1.15.7\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar version = \"1.15.7\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/el, /**String*/selector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n return false;\n}\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType && el.host !== el ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\nfunction css(el, prop, val) {\n var style = el && el.style;\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n } while (!selfOnly && (el = el.parentNode));\n }\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n return list;\n }\n return [];\n}\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode;\n\n // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect();\n\n // Set relative to edges of padding box of container\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n } while (container = container.parentNode);\n }\n }\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n\n /* jshint boss:true */\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n return false;\n}\n\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n currentChild++;\n }\n i++;\n }\n return null;\n}\n\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n return last || null;\n}\n\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\nfunction index(el, selector) {\n var index = 0;\n if (!el || !el.parentNode) {\n return -1;\n }\n\n /* jshint boss:true */\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n return index;\n}\n\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n return [offsetLeft, offsetTop];\n}\n\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n } while (elem = elem.parentNode);\n return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\nfunction getChildContainingRectFromElement(container, options, ghostEl) {\n var rect = {};\n Array.from(container.children).forEach(function (child) {\n var _rect$left, _rect$top, _rect$right, _rect$bottom;\n if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;\n var childRect = getRect(child);\n rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);\n rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);\n rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);\n rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);\n });\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);\n\n // If animating: compensate for current animation\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n target.toRect = toRect;\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n }\n\n // if fromRect != toRect: animate\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n if (!time) {\n time = _this.options.animation;\n }\n _this.animate(target, animatingRect, toRect, time);\n }\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\nfunction repaint(target) {\n return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n this.eventCanceled = false;\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return;\n // Fire global events if it exists in this sortable\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n\n // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized;\n\n // Add default options from plugin\n _extends(defaults, initialized.defaults);\n });\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return;\n\n // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n\n _silent = false,\n savedInputChecked = [];\n\n/** @const */\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return;\n // false when <= IE11\n if (IE11OrLess) {\n return false;\n }\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n /**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n var group = {};\n var originalGroup = options.group;\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n };\n\n// #1184 fix - Prevent click event on fallback if dragged but item not changed position\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n if (nearest) {\n // Create imitation event\n var event = {};\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n nearest[expando]._onDragOver(event);\n }\n }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n this.el = el; // root element\n this.options = options = _extends({}, options);\n\n // Export instance\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n // Disabled on Safari: #1571; Enabled on Safari IOS: #2244\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && (!Safari || IOS),\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults);\n\n // Set default options\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options);\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n // Setup drag mode\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n }\n\n // Bind events\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n sortables.push(this.el);\n\n // Restore sorting\n options.store && options.store.get && this.sort(options.store.get(this) || []);\n\n // Add animation state manager\n _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {\n if (!evt.cancelable) return;\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n _saveInputCheckedState(el);\n\n // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n if (dragEl) {\n return;\n }\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n }\n\n // cancel dnd if original target is content editable\n if (originalTarget.isContentEditable) {\n return;\n }\n\n // Safari ignores further event handling after mousedown\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n target = closest(target, options.draggable, el, false);\n if (target && target.animated) {\n return;\n }\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n }\n\n // Get the index of the dragged element within its parent\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable);\n\n // Check filter\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n if (filter) {\n preventOnFilter && evt.preventDefault();\n return; // cancel dnd\n }\n }\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n }\n\n // Prepare `dragstart`\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n _this._onDrop();\n return;\n }\n // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n _this._disableDelayedDragEvents();\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n }\n\n // Bind the events: dragstart/dragend\n _this._triggerDragStart(evt, touch);\n\n // Drag start event\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n });\n\n // Chosen item\n toggleClass(dragEl, options.chosenClass, true);\n };\n\n // Disable \"draggable\"\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n if (options.supportPointer) {\n on(ownerDocument, 'pointerup', _this._onDrop);\n // Native D&D triggers pointercancel\n !this.nativeDraggable && on(ownerDocument, 'pointercancel', _this._onDrop);\n } else {\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop);\n }\n\n // Make dragEl draggable (must be before delay for FireFox)\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n pluginEvent('delayStart', this, {\n evt: evt\n });\n\n // Delay is impossible for native DnD in Edge or IE\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n if (options.supportPointer) {\n on(ownerDocument, 'pointerup', _this._disableDelayedDrag);\n on(ownerDocument, 'pointercancel', _this._disableDelayedDrag);\n } else {\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n }\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {\n var touch = e.touches ? e.touches[0] : e;\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'pointerup', this._disableDelayedDrag);\n off(ownerDocument, 'pointercancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n try {\n if (document.selection) {\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n var options = this.options;\n\n // Apply effect\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost();\n\n // Drag start event\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n _hideGhostForTarget();\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n target = parent; // store last element\n }\n /* jshint boss:true */ while (parent = getParentOrHost(parent));\n }\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);\n\n // only set the status to dragging, when we are actually dragging\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options;\n\n // Position absolutely\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl);\n\n // Set transform-origin\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {\n var _this = this;\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n pluginEvent('setupClone', this);\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n this._hideClone();\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n }\n\n // #1143: IFrame support workaround\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n _this._hideClone();\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true);\n\n // Set proper drop events\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n on(document, 'drop', _this);\n\n // #1276 fix:\n css(dragEl, 'transform', 'translateZ(0)');\n }\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n window.getSelection().removeAllRanges();\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver( /**Event*/evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n if (_silent) return;\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n }\n\n // Capture animation state\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n _this.captureAnimationState();\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n }\n\n // Return invocation when dragEl is inserted (or completed)\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n }\n\n // Animation\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n }\n\n // Null lastTarget if it is not inside a previously swapped element\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n }\n\n // no bubbling and not fallback\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n // Do not detect for empty insert if already inserted\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n }\n\n // Call when dragEl has been inserted\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n ignoreNextClick = false;\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n if (revert) {\n parentEl = rootEl; // actualization\n capture();\n this._hideClone();\n dragOverEvent('revert');\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n return completed(true);\n }\n var elLastChild = lastChild(el, options.draggable);\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n }\n\n // if there is a last element, it is the target\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n if (target) {\n targetRect = getRect(target);\n }\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n if (firstChild === dragEl) {\n return completed(false);\n }\n target = firstChild;\n targetRect = getRect(target);\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n }\n // If dragEl is already beside target: Do not insert\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n }\n\n // Undo chrome's scroll adjustment (has no effect on other browsers)\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n parentEl = dragEl.parentNode; // actualization\n\n // must be done before animation\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n changed();\n return completed(true);\n }\n }\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'pointercancel', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop( /**Event*/evt) {\n var el = this.el,\n options = this.options;\n\n // Get the index of the dragged element within its parent\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode;\n\n // Get again after plugin event\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n if (Sortable.eventCanceled) {\n this._nulling();\n return;\n }\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n _cancelNextTick(this.cloneId);\n _cancelNextTick(this._dragStartId);\n\n // Unbind events\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n this._offMoveEvents();\n this._offUpEvents();\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n css(dragEl, 'transform', '');\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n _disableDraggable(dragEl);\n dragEl.style['will-change'] = '';\n\n // Remove classes\n // ghostClass is added in dragStarted\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n toggleClass(dragEl, this.options.chosenClass, false);\n\n // Drag stop event\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n // Remove event\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // drag from one list and drop into another\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // Save sorting\n this.save();\n }\n }\n }\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n var el = this.el;\n savedInputChecked.forEach(function (checkEl) {\n if (el.contains(checkEl)) {\n checkEl.checked = true;\n }\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent( /**Event*/evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n break;\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n _globalDragOver(evt);\n }\n break;\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n for (; i < n; i++) {\n el = children[i];\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n return order;\n },\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n }\n // Remove draggable attributes\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n this._onDrop();\n this._disableDelayedDragEvents();\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n return;\n }\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return;\n\n // show clone at dragEl or original position\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\nfunction _globalDragOver( /**Event*/evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal;\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n return retVal;\n}\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\nfunction _unsilent() {\n _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n invert = invert || invertSwap;\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n return 0;\n}\n\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n while (i--) {\n sum += str.charCodeAt(i);\n }\n return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n}\n\n// Fixed #973:\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n}\n\n// Export utils\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild,\n expando: expando\n};\n\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\nSortable.get = function (element) {\n return element[expando];\n};\n\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n};\n\n// Export\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n };\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt;\n\n // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback);\n\n // Listener for pointer element change\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval();\n // Detect for pointer elem change, emulating native DnD behaviour\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn;\n\n // New scroll root, set scrollEl\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n var layersOut = 0;\n var currentParent = scrollEl;\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n }\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\nfunction Revert() {}\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n this.sortable.animateAll();\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n dataTransfer.setData('Text', data);\n }\n };\n }\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n sortable._hideClone();\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n });\n\n // Sort multi-drag elements\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n\n sortable.captureAnimationState();\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n }\n\n // Remove all auxiliary multidrag items from el, if sorting enabled\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n initialFolding = false;\n // If leaving sort:false root, or already folding - Fold to new location\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute);\n\n // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n }\n\n // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n activeSortable._showClone(sortable);\n\n // Unfold animation for clones if showing from hidden\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children;\n\n // Multi-drag selection\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n\n // Modifier activated, select from last to dragEl\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n (function () {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n var filter = options.filter;\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n // Check if element is draggable\n if (!closest(children[i], options.draggable, parentEl, false)) continue;\n // Check if element is filtered\n var filtered = filter && (typeof filter === 'function' ? filter.call(sortable, evt, children[i], sortable) : filter.split(',').some(function (criteria) {\n return closest(children[i], criteria.trim(), parentEl, false);\n }));\n if (filtered) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n })();\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n }\n\n // Multi-drag drop\n if (dragStarted && this.isMultiDrag) {\n folding = false;\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect;\n\n // Prepare unfold animation\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n }\n\n // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n multiDragIndex++;\n });\n\n // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n if (update) {\n dispatchSortableEvent('update');\n dispatchSortableEvent('sort');\n }\n }\n }\n\n // Must be done after capturing individual rects (scroll bar)\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n multiDragSortable = toSortable;\n }\n\n // Remove clones if necessary\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n // Only deselect if selection is in this sortable\n if (multiDragSortable !== this.sortable) return;\n\n // Only deselect if target is not item in this sortable\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;\n\n // Only deselect if left click\n if (evt && evt.button !== 0) return;\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n multiDragSortable = sortable;\n }\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n });\n\n // multiDragElements will already be sorted if folding\n var newIndex;\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n return key;\n }\n }\n });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","\n\n\n\n","import mod from \"-!../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=246937f3\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=246937f3&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vue-admin-table\",class:{'vue-admin-table-padded': _vm.padded},attrs:{\"id\":_vm.tableId}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showToolbar),expression:\"showToolbar\"}],staticClass:\"toolbar\"},[_c('div',{staticClass:\"flex flex-nowrap\"},[_vm._l((_vm.actions),function(action,index){return _c('div',{key:index},[_c('admin-table-action-button',{attrs:{\"label\":action.label,\"icon\":action.icon,\"action\":action.action,\"actions\":action.actions,\"allow-multiple\":action.allowMultiple,\"ids\":_vm.checks,\"enabled\":_vm.checks.length ? true : false,\"error\":action.error,\"ajax\":action.ajax},on:{\"reload\":_vm.reload}})],1)}),_vm._v(\" \"),(_vm.search && !_vm.tableData.length)?_c('div',{staticClass:\"flex-grow texticon search icon clearable\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],staticClass:\"text fullwidth\",attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"placeholder\":_vm.searchPlaceholderText},domProps:{\"value\":(_vm.searchTerm)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value},_vm.handleSearch]}}),_vm._v(\" \"),_c('div',{staticClass:\"clear hidden\",attrs:{\"title\":_vm.searchClearTitle}})]):_vm._e(),_vm._v(\" \"),(_vm.buttons && _vm.buttons.length)?_c('div',{staticClass:\"vue-admin-table-buttons\"},[_c('div',{staticClass:\"flex flex-nowrap\"},_vm._l((_vm.buttons),function(button,index){return _c('div',{key:index},[_c('admin-table-button',{attrs:{\"label\":button.label,\"icon\":button.icon,\"href\":button.href,\"btn-class\":button.class,\"enabled\":_vm.isLoading\n ? false\n : button.enabled != undefined\n ? button.enabled\n : true}})],1)}),0)]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{class:{'content-pane': _vm.fullPage}},[(this.isEmpty)?_c('div',{staticClass:\"zilch\"},[_c('p',[_vm._v(_vm._s(_vm.emptyMessage))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"tableview\",class:{loading: _vm.isLoading, hidden: this.isEmpty}},[_c('div',{class:{'vue-admin-tablepane': true, tablepane: _vm.fullPane}},[_c('vuetable',{ref:\"vuetable\",attrs:{\"append-params\":_vm.appendParams,\"api-mode\":_vm.apiUrl ? true : false,\"api-url\":_vm.apiUrl,\"css\":_vm.tableCss,\"data\":_vm.tableData,\"detail-row-component\":_vm.detailRowComponent,\"fields\":_vm.fields,\"per-page\":_vm.perPage,\"pagination-path\":\"pagination\"},on:{\"vuetable:loaded\":_vm.init,\"vuetable:loading\":_vm.loading,\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.onLoadSuccess},scopedSlots:_vm._u([{key:\"checkbox\",fn:function(props){return [_c('admin-table-checkbox',{attrs:{\"id\":props.rowData.id,\"checks\":_vm.checks,\"status\":_vm.checkboxStatus(props.rowData)},on:{\"addCheck\":_vm.addCheck,\"removeCheck\":_vm.removeCheck}})]}},{key:\"title\",fn:function(props){return [(props.rowData.status !== undefined)?_c('span',{staticClass:\"status\",class:{enabled: props.rowData.status}}):_vm._e(),_vm._v(\" \"),(props.rowData.url)?_c('a',{class:{'cell-bold': props.rowData.status === undefined},attrs:{\"href\":props.rowData.url}},[_vm._v(_vm._s(props.rowData.title))]):_c('span',{class:{'cell-bold': props.rowData.status === undefined}},[_vm._v(_vm._s(props.rowData.title))])]}},{key:\"handle\",fn:function(props){return [_c('admin-table-copy-text-button',{key:props.rowData.id,attrs:{\"value\":props.rowData.handle}})]}},{key:\"menu\",fn:function(props){return [(props.rowData.menu.showItems)?[_c('a',{attrs:{\"href\":props.rowData.menu.url}},[_vm._v(_vm._s(props.rowData.menu.label)+\" (\"+_vm._s(props.rowData.menu.items.length)+\")\")]),_vm._v(\" \"),_c('a',{staticClass:\"menubtn\",attrs:{\"title\":props.rowData.menu.label}}),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',_vm._l((props.rowData.menu.items),function(item,index){return _c('li',{key:index},[_c('a',{attrs:{\"href\":item.url}},[_vm._v(_vm._s(item.label))])])}),0)])]:[_c('a',{attrs:{\"href\":props.rowData.menu.url}},[_vm._v(_vm._s(props.rowData.menu.label))])]]}},{key:\"detail\",fn:function(props){return [(\n props.rowData.detail.content && props.rowData.detail.handle\n )?_c('div',{staticClass:\"detail-cursor-pointer\",domProps:{\"innerHTML\":_vm._s(props.rowData.detail.handle)},on:{\"click\":function($event){return _vm.handleDetailRow(props.rowData.id)}}}):_vm._e(),_vm._v(\" \"),(\n props.rowData.detail.content &&\n (!props.rowData.detail.handle ||\n props.rowData.detail.handle == undefined) &&\n (Object.keys(props.rowData.detail.content).length ||\n props.rowData.detail.content.length)\n )?_c('div',{staticClass:\"detail-cursor-pointer\",attrs:{\"data-icon\":\"info\",\"title\":props.rowData.detail.title},on:{\"click\":function($event){return _vm.handleDetailRow(props.rowData.id)}}}):_vm._e()]}},{key:\"reorder\",fn:function(props){return [_c('i',{staticClass:\"move icon vue-table-move-handle\",class:{disabled: !_vm.canReorder},attrs:{\"data-id\":props.rowData.id}})]}},{key:\"delete\",fn:function(props){return [(\n props.rowData._showDelete == undefined ||\n props.rowData._showDelete == true\n )?_c('admin-table-delete-button',{attrs:{\"id\":props.rowData.id,\"name\":props.rowData.title,\"before\":_vm.beforeDelete,\"success-message\":_vm.deleteSuccessMessage,\"confirmation-message\":_vm.deleteConfirmationMessage,\"fail-message\":_vm.deleteFailMessage,\"action-url\":_vm.deleteAction,\"disabled\":!_vm.canDelete},on:{\"loading\":function($event){return _vm.loading()},\"finishloading\":function($event){return _vm.loading(false)},\"reload\":function($event){return _vm.remove(props.rowIndex, props.rowData.id)}}}):_vm._e()]}}])})],1),_vm._v(\" \"),_c('admin-table-pagination',{ref:\"pagination\",attrs:{\"itemLabels\":_vm.itemLabels},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AddLineItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AddLineItem.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AddLineItem.vue?vue&type=template&id=70ae8948\"\nimport script from \"./AddLineItem.vue?vue&type=script&lang=js\"\nexport * from \"./AddLineItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./AddLineItem.vue?vue&type=style&index=0&id=70ae8948&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.showForm)?[(_vm.lineItems.length > 0)?[_c('div',{staticClass:\"text-left\"},[_c('div',{staticClass:\"flex\"},[_c('btn-link',{attrs:{\"button-class\":\"btn icon add\"},on:{\"click\":function($event){_vm.showForm = true}}},[_vm._v(_vm._s(_vm._f(\"t\")('Add a line item','commerce')))]),_vm._v(\" \"),_c('btn-link',{attrs:{\"button-class\":\"btn icon add\"},on:{\"click\":_vm.addLineItem}},[_vm._v(_vm._s(_vm._f(\"t\")('Add a custom line item','commerce')))])],1)])]:[_c('div',{staticClass:\"starter\"},[_c('div',{attrs:{\"data-icon\":\"info\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm._f(\"t\")('Your order is empty','commerce')))]),_vm._v(\" \"),_c('div',{staticClass:\"flex\"},[_c('btn-link',{attrs:{\"button-class\":\"btn icon add\"},on:{\"click\":function($event){_vm.showForm = true}}},[_vm._v(_vm._s(_vm._f(\"t\")('Add a line item','commerce')))]),_vm._v(\" \"),_c('btn-link',{attrs:{\"button-class\":\"btn icon add\"},on:{\"click\":_vm.addLineItem}},[_vm._v(_vm._s(_vm._f(\"t\")('Add a custom line item','commerce')))])],1)])]]:[_c('hr'),_vm._v(\" \"),_c('div',[_c('div',{staticClass:\"flex add-line-item-table-header pb\"},[_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Add a line item', 'commerce'))+\"\\n \")]),_vm._v(\" \"),_c('form',{staticClass:\"add-line-item-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.lineItemAdd()}}},[_c('div',{staticClass:\"buttons buttons--add-line-item\"},[_c('input',{staticClass:\"btn\",class:{disabled: _vm.formDisabled},attrs:{\"type\":\"button\",\"disabled\":_vm.formDisabled,\"value\":_vm.$options.filters.t('Cancel', 'commerce')},on:{\"click\":function($event){_vm.showForm = false}}}),_vm._v(\" \"),_c('input',{staticClass:\"btn secondary\",class:{disabled: _vm.submitDisabled},attrs:{\"type\":\"submit\",\"disabled\":_vm.submitDisabled},domProps:{\"value\":_vm.$options.filters.t('Add', 'commerce')},on:{\"click\":function($event){$event.preventDefault();return _vm.lineItemAdd()}}})])])]),_vm._v(\" \"),_c('admin-table',{ref:\"addAdminTable\",attrs:{\"allow-multiple-selections\":true,\"table-data-endpoint\":_vm.endpoint,\"checkboxes\":true,\"checkbox-status\":_vm.isCheckboxEnabled,\"columns\":_vm.purchasableTableColumns,\"padded\":true,\"per-page\":\"10\",\"search\":\"true\"},on:{\"onSelect\":_vm.handleCheckboxSelect,\"data\":_vm.handleTableData}}),_vm._v(\" \"),_c('form',{staticClass:\"add-line-item-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.lineItemAdd()}}},[_c('div',{staticClass:\"buttons buttons--add-line-item\"},[_c('input',{staticClass:\"btn\",class:{disabled: _vm.formDisabled},attrs:{\"type\":\"button\",\"disabled\":_vm.formDisabled,\"value\":_vm.$options.filters.t('Cancel', 'commerce')},on:{\"click\":function($event){_vm.showForm = false}}}),_vm._v(\" \"),_c('input',{staticClass:\"btn secondary\",class:{disabled: _vm.submitDisabled},attrs:{\"type\":\"submit\",\"disabled\":_vm.submitDisabled},domProps:{\"value\":_vm.$options.filters.t('Add', 'commerce')},on:{\"click\":function($event){$event.preventDefault();return _vm.lineItemAdd()}}})])])],1)]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./BtnLink.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./BtnLink.vue?vue&type=script&lang=js\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./BtnLink.vue?vue&type=template&id=5816f467\"\nimport script from \"./BtnLink.vue?vue&type=script&lang=js\"\nexport * from \"./BtnLink.vue?vue&type=script&lang=js\"\nimport style0 from \"./BtnLink.vue?vue&type=style&index=0&id=5816f467&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"btn-link-default\",class:_vm.buttonClass,attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('click')}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderDetails.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderDetails.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./OrderAdjustments.vue?vue&type=template&id=40736e28\"\nimport script from \"./OrderAdjustments.vue?vue&type=script&lang=js\"\nexport * from \"./OrderAdjustments.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"order-flex justify-end\"},[_c('div',{staticClass:\"w-1/4\"},[(_vm.canEdit && !_vm.editMode && _vm.draft.order.isCompleted)?_c('btn-link',{on:{\"click\":function($event){return _vm.enableEditMode()}}},[_vm._v(_vm._s(_vm._f(\"t\")('Edit adjustments','commerce')))]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"w-3/4\"},[_c('adjustments',{attrs:{\"editing\":_vm.editing && _vm.editMode,\"adjustments\":_vm.adjustments,\"recalculation-mode\":_vm.recalculationMode},on:{\"addAdjustment\":_vm.addOrderAdjustment,\"updateAdjustment\":_vm.updateOrderAdjustment,\"removeAdjustment\":_vm.removeOrderAdjustment}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Total.vue?vue&type=template&id=5d0b23de\"\nimport script from \"./Total.vue?vue&type=script&lang=js\"\nexport * from \"./Total.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"order-flex justify-between align-center\"},[_c('h2',{staticClass:\"m-0\"},[_vm._v(_vm._s(_vm._f(\"t\")('Total','commerce')))]),_vm._v(\" \"),_c('h2',{staticClass:\"m-0\"},[_vm._v(_vm._s(_vm.order.totalPriceAsCurrency))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OrderDetails.vue?vue&type=template&id=12078153\"\nimport script from \"./OrderDetails.vue?vue&type=script&lang=js\"\nexport * from \"./OrderDetails.vue?vue&type=script&lang=js\"\nimport style0 from \"./OrderDetails.vue?vue&type=style&index=0&id=12078153&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.draft)?_c('div',[_c('div',{staticClass:\"order-details pt\",class:{'order-opacity-50': _vm.recalculateLoading || _vm.saveLoading}},[(!_vm.draft)?[_c('div',{staticClass:\"spinner\"})]:[(_vm.lineItemsErrors.length > 0)?_c('ul',_vm._l((_vm.lineItemsErrors),function(lineItemError,lineItemsErrorsKey){return _c('li',{key:'lineItemsErrors-' + lineItemsErrorsKey,staticClass:\"error\"},[_vm._v(\"\\n \"+_vm._s(lineItemError)+\"\\n \")])}),0):_vm._e(),_vm._v(\" \"),(_vm.lineItems.length > 0 || _vm.editing)?[_c('line-items',{attrs:{\"line-items\":_vm.lineItems,\"editing\":_vm.editing,\"recalculation-mode\":_vm.recalculationMode},on:{\"updateLineItems\":_vm.updateLineItems}}),_vm._v(\" \"),(_vm.editing)?[_c('div',{staticClass:\"pb\",class:{\n 'orderedit-border-color orderedit-border-t pt':\n _vm.lineItems.length == 0,\n }},[_c('add-line-item',{on:{\"addLineItem\":_vm.addLineItem}})],1)]:_vm._e(),_vm._v(\" \"),(\n (_vm.editing && _vm.originalDraft.order.isCompleted) ||\n _vm.recalculateLoading\n )?_c('div',{staticClass:\"text-right pb\"},[(_vm.editing && _vm.originalDraft.order.isCompleted)?_c('div',{staticClass:\"recalculate-action\"},[_c('btn-link',{staticClass:\"recalculate-btn error\",on:{\"click\":function($event){return _vm.autoRecalculate()}}},[_vm._v(_vm._s(_vm._f(\"t\")('Recalculate order','commerce')))])],1):_vm._e(),_vm._v(\" \"),(_vm.recalculateLoading)?_c('div',{staticClass:\"spinner\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.lineItems.length > 0)?_c('div',{staticClass:\"order-total-summary pt\"},[(_vm.orderAdjustments.length > 0 || _vm.editing)?[_c('order-adjustments',{attrs:{\"adjustments\":_vm.orderAdjustments,\"editing\":_vm.editing,\"recalculation-mode\":_vm.recalculationMode},on:{\"updateOrderAdjustments\":_vm.updateOrderAdjustments}})]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"order-flex justify-end\"},[_c('div',{staticClass:\"w-3/4 orderedit-border-t orderedit-border-color pt\"},[_c('total',{attrs:{\"order\":_vm.draft.order}})],1)])],2):_vm._e()]:_vm._e()]],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderStatus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderStatus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./OrderStatus.vue?vue&type=template&id=49948987\"\nimport script from \"./OrderStatus.vue?vue&type=script&lang=js\"\nexport * from \"./OrderStatus.vue?vue&type=script&lang=js\"\nimport style0 from \"./OrderStatus.vue?vue&type=style&index=0&id=49948987&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',[_c('a',{ref:\"orderStatus\",staticClass:\"btn menubtn order-status-btn\"},[(_vm.orderStatus.color)?[_c('span',{staticClass:\"status\",class:( _obj = {}, _obj[_vm.orderStatus.color] = true, _obj )})]:[_c('span',{staticClass:\"status\"})],_vm._v(\" \"),_c('span',{staticClass:\"order-status-btn-name\"},[_vm._v(_vm._s(_vm.orderStatus.uiLabel))])],2),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',{staticClass:\"padded\",attrs:{\"role\":\"listbox\"}},_vm._l((_vm.orderStatuses),function(status,key){\nvar _obj;\nreturn _c('li',{key:key},[_c('a',{class:{sel: _vm.orderStatus.id === status.value},attrs:{\"data-id\":status.id,\"data-color\":status.color,\"data-name\":status.uiLabel}},[_c('span',{staticClass:\"status\",class:( _obj = {}, _obj[status.color] = true, _obj )}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(status.uiLabel))])])])}),0)])]),_vm._v(\" \"),(_vm.originalOrderStatusId !== _vm.orderStatusId)?[_c('div',{staticClass:\"order-status-message\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.message),expression:\"message\"}],ref:\"textarea\",staticClass:\"text\",attrs:{\"placeholder\":_vm.$options.filters.t('Message', 'commerce'),\"maxlength\":\"10000\"},domProps:{\"value\":(_vm.message)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.message=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"order-edit-suppress-emails\",attrs:{\"for\":\"suppressEmails\"}},[_c('lightswitch',{attrs:{\"name\":\"suppressEmails\",\"value\":_vm.suppressEmails},on:{\"change\":function (val) { return (_vm.suppressEmails = val); }}}),_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Suppress emails','commerce'))+\"\\n \")],1)])]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderSite.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderSite.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./OrderSite.vue?vue&type=template&id=68f7abb6\"\nimport script from \"./OrderSite.vue?vue&type=script&lang=js\"\nexport * from \"./OrderSite.vue?vue&type=script&lang=js\"\nimport style0 from \"./OrderSite.vue?vue&type=style&index=0&id=68f7abb6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',[_c('a',{ref:\"orderSite\",staticClass:\"btn menubtn order-site-btn\"},[_c('span',[_vm._v(_vm._s(_vm.orderSite.name)+\" (\"+_vm._s(_vm.orderSite.language)+\")\")])]),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',{staticClass:\"padded\",attrs:{\"role\":\"listbox\"}},_vm._l((_vm.orderSites),function(site,key){return _c('li',{key:key},[_c('a',{class:{sel: _vm.orderSite.id === site.value},attrs:{\"data-id\":site.id,\"data-name\":site.name}},[_vm._v(\"\\n \"+_vm._s(site.name)+\" (\"+_vm._s(site.language)+\")\\n \")])])}),0)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"order-edit-shipping-method-wrapper\"}},[(_vm.loading)?_c('div',{staticClass:\"spinner\"}):(_vm.showSelect)?[_c('select-input',{attrs:{\"label\":\"name\",\"options\":_vm.shippingMethods,\"filterable\":true,\"clearable\":false,\"placeholder\":_vm.shippingMethodHandle},on:{\"input\":_vm.onChange},scopedSlots:_vm._u([{key:\"option\",fn:function(slotProps){return [_c('div',{staticClass:\"shipping-method-select-option\"},[_c('span',{staticClass:\"status\",class:{\n enabled: slotProps.option.matchesOrder,\n disabled: !slotProps.option.matchesOrder,\n }}),_vm._v(_vm._s(slotProps.option.name)+\"\\n \")])]}},{key:\"selected-option\",fn:function(slotProps){return [_c('div',[_c('span',{staticClass:\"status\",class:{\n enabled: slotProps.selectedOption.matchesOrder,\n disabled:\n !slotProps.selectedOption.matchesOrder,\n }}),_vm._v(_vm._s(slotProps.selectedOption.name)+\"\\n \")])]}}]),model:{value:(_vm.selectedShippingMethod),callback:function ($$v) {_vm.selectedShippingMethod=$$v},expression:\"selectedShippingMethod\"}})]:[_c('div',{staticClass:\"flex flex-nowrap align-center\"},[_c('div',{staticClass:\"flex-grow\"},[_c('span',[_vm._v(_vm._s(_vm.currentMethodName))]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"small code shipping-method-handle\"},[_vm._v(_vm._s(_vm.orderShippingMethodHandle))])]),_vm._v(\" \"),_c('button',{staticClass:\"btn small icon\",attrs:{\"data-icon\":\"edit\"},on:{\"click\":_vm.onEdit}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Edit','commerce'))+\"\\n \")])])]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* jshint esversion: 6, strict: false */\n/* globals Craft, Garnish, $ */\n\nimport axios from 'axios/index';\n\nexport default {\n get() {\n //If we have the order loaded into the page already return that data and save us a ajax trip\n if (window.orderEdit.data) {\n return new Promise((resolve) => {\n var response = {};\n response.data = window.orderEdit.data;\n resolve(response);\n });\n }\n },\n\n recalculate(data) {\n return Craft.sendActionRequest('POST', 'commerce/orders/refresh', {data});\n },\n\n getShippingMethodOptions(data) {\n return Craft.sendActionRequest(\n 'POST',\n 'commerce/orders/get-shipping-method-options',\n {data}\n );\n },\n\n customerSearch(options) {\n const data = {};\n const opts = Object.assign({query: null, cancelToken: null}, options);\n let config = {\n headers: {\n 'X-CSRF-Token': Craft.csrfTokenValue,\n },\n };\n\n if (typeof opts.cancelToken !== 'undefined' && opts.cancelToken) {\n config['cancelToken'] = opts.cancelToken;\n }\n\n if (typeof opts.query !== 'undefined' && opts.query) {\n data.query = encodeURIComponent(opts.query);\n }\n\n return axios.get(\n Craft.getActionUrl('commerce/orders/customer-search', data),\n config\n );\n },\n\n sendEmail(emailTemplateId) {\n return axios.post(\n Craft.getActionUrl('commerce/orders/send-email', {\n id: emailTemplateId,\n orderId: window.orderEdit.orderId,\n }),\n {},\n {\n headers: {\n 'X-CSRF-Token': Craft.csrfTokenValue,\n },\n }\n );\n },\n\n deleteOrder(orderId) {\n let formData = new FormData();\n formData.append('orderId', orderId);\n\n return axios.post(\n Craft.getActionUrl('commerce/orders/delete-order'),\n formData,\n {\n headers: {\n 'X-CSRF-Token': Craft.csrfTokenValue,\n },\n }\n );\n },\n};\n","/* jshint esversion: 6 */\n/* globals Craft */\nexport default {\n /**\n * Builds draft data and makes sure values have the right type.\n **/\n buildDraftData(draft) {\n const draftData = {\n order: {\n customerId: draft.order.customerId,\n orderStatusId: draft.order.orderStatusId,\n isCompleted: draft.order.isCompleted,\n reference: draft.order.reference,\n couponCode: draft.order.couponCode,\n recalculationMode: draft.order.recalculationMode,\n shippingMethodHandle: draft.order.shippingMethodHandle,\n shippingMethodName: draft.order.shippingMethodName,\n shippingAddressId: draft.order.shippingAddressId,\n shippingAddress: null,\n billingAddressId: draft.order.billingAddressId,\n billingAddress: null,\n message: draft.order.message,\n dateOrdered: draft.order.dateOrdered,\n lineItems: [],\n orderAdjustments: [],\n orderSiteId: draft.order.orderSiteId,\n notices: draft.order.notices,\n adminNotices: draft.order.adminNotices,\n },\n };\n\n if (draft.order.billingAddress) {\n draftData.order.billingAddress = draft.order.billingAddress;\n }\n\n if (draft.order.shippingAddress) {\n draftData.order.shippingAddress = draft.order.shippingAddress;\n }\n\n if (Object.keys(draft.order).indexOf('sourceBillingAddressId') !== -1) {\n draftData.order.sourceBillingAddressId =\n draft.order.sourceBillingAddressId;\n }\n\n if (Object.keys(draft.order).indexOf('sourceShippingAddressId') !== -1) {\n draftData.order.sourceShippingAddressId =\n draft.order.sourceShippingAddressId;\n }\n\n if (draft.order.suppressEmails != undefined) {\n draftData.order.suppressEmails = draft.order.suppressEmails;\n }\n\n if (\n draftData.order.dateOrdered &&\n !draftData.order.dateOrdered.hasOwnProperty('timezone')\n ) {\n draftData.order.dateOrdered.timezone = Craft.timezone;\n }\n\n draftData.order.id = this.parseInputValue('int', draft.order.id);\n\n draft.order.lineItems.forEach((lineItem, lineItemKey) => {\n let _lineItem = {};\n _lineItem.lineItemStatusId = this.parseInputValue(\n 'int',\n lineItem.lineItemStatusId\n );\n _lineItem.id = this.parseInputValue('int', lineItem.id);\n _lineItem.type = lineItem.type;\n\n // Set line item properties for custom line items\n if (lineItem.type.value === 'custom') {\n if (lineItem.description) {\n _lineItem.description = lineItem.description;\n }\n\n if (lineItem.sku) {\n _lineItem.sku = lineItem.sku;\n }\n\n if (lineItem.hasFreeShipping !== undefined) {\n _lineItem.hasFreeShipping = lineItem.hasFreeShipping;\n }\n\n if (lineItem.isPromotable !== undefined) {\n _lineItem.isPromotable = lineItem.isPromotable;\n }\n\n if (lineItem.isShippable !== undefined) {\n _lineItem.isShippable = lineItem.isShippable;\n }\n\n if (lineItem.isTaxable !== undefined) {\n _lineItem.isTaxable = lineItem.isTaxable;\n }\n }\n\n _lineItem.purchasableId = this.parseInputValue(\n 'int',\n lineItem.purchasableId\n );\n _lineItem.shippingCategoryId = this.parseInputValue(\n 'int',\n lineItem.shippingCategoryId\n );\n _lineItem.taxCategoryId = this.parseInputValue(\n 'int',\n lineItem.taxCategoryId\n );\n _lineItem.promotionalPrice =\n lineItem.promotionalPrice === '' ? null : lineItem.promotionalPrice;\n _lineItem.price = lineItem.price;\n _lineItem.qty = this.parseInputValue('int', lineItem.qty);\n _lineItem.note = lineItem.note;\n _lineItem.privateNote = lineItem.privateNote;\n _lineItem.orderId = lineItem.orderId;\n _lineItem.options = lineItem.options;\n _lineItem.adjustments = [];\n _lineItem.uid = lineItem.uid;\n\n lineItem.adjustments.forEach((adjustment, adjustmentKey) => {\n let _adjustment = {};\n _adjustment.id = this.parseInputValue('int', adjustment.id);\n _adjustment.amount = this.parseInputValue('float', adjustment.amount);\n _adjustment.included = this.parseInputValue(\n 'bool',\n adjustment.included\n );\n _adjustment.orderId = this.parseInputValue('int', adjustment.orderId);\n _adjustment.lineItemId = this.parseInputValue(\n 'int',\n adjustment.lineItemId\n );\n _adjustment.name = adjustment.name;\n _adjustment.description = adjustment.description;\n _adjustment.type = adjustment.type;\n _adjustment.sourceSnapshot = adjustment.sourceSnapshot;\n\n _lineItem.adjustments[adjustmentKey] = _adjustment;\n });\n\n draftData.order.lineItems[lineItemKey] = _lineItem;\n });\n\n draft.order.orderAdjustments.forEach((adjustment, adjustmentKey) => {\n let _orderAdjustment = {};\n _orderAdjustment.id = this.parseInputValue('int', adjustment.id);\n _orderAdjustment.amount = this.parseInputValue(\n 'float',\n adjustment.amount\n );\n _orderAdjustment.included = this.parseInputValue(\n 'bool',\n adjustment.included\n );\n _orderAdjustment.orderId = this.parseInputValue(\n 'int',\n adjustment.orderId\n );\n _orderAdjustment.name = adjustment.name;\n _orderAdjustment.description = adjustment.description;\n _orderAdjustment.type = adjustment.type;\n _orderAdjustment.sourceSnapshot = adjustment.sourceSnapshot;\n\n draftData.order.orderAdjustments[adjustmentKey] = _orderAdjustment;\n });\n\n return draftData;\n },\n\n /**\n * Parse input value.\n **/\n parseInputValue(type, value) {\n let parsedValue = null;\n\n switch (type) {\n case 'int':\n parsedValue = parseInt(value);\n break;\n case 'float':\n parsedValue = parseFloat(value);\n break;\n case 'bool':\n parsedValue = !!value;\n break;\n }\n\n if (isNaN(parsedValue)) {\n return value;\n }\n\n return parsedValue;\n },\n};\n","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./ShippingMethod.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./ShippingMethod.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ShippingMethod.vue?vue&type=template&id=428a2a54\"\nimport script from \"./ShippingMethod.vue?vue&type=script&lang=js\"\nexport * from \"./ShippingMethod.vue?vue&type=script&lang=js\"\nimport style0 from \"./ShippingMethod.vue?vue&type=style&index=0&id=428a2a54&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* global $ */\n\nimport utils from '../helpers/utils';\n\nexport default {\n methods: {\n saveOrder: function (draft) {\n if (this.$store.state.saveLoading) {\n return false;\n }\n\n this.$store.commit('updateSaveLoading', true);\n\n const data = utils.buildDraftData(draft);\n const dataString = JSON.stringify(data);\n\n this.$store.commit('updateOrderData', dataString);\n\n this.$nextTick(() => {\n $('#main-form').submit();\n });\n },\n },\n};\n","\n\n \n\n
\n
{{ 'Last Updated' | t('commerce') }}
\n {{ draft.order.dateUpdated.date }}\n {{ draft.order.dateUpdated.time }}\n
\n\n
\n
{{ 'IP Address' | t('commerce') }}
\n {{ draft.order.lastIp }}\n
\n\n
\n
{{ 'Origin' | t('commerce') }}
\n {{ originLabel(draft.order.origin) }}\n
\n \n
{{ 'Completed Email' | t('commerce') }}
\n {{ draft.order.orderCompletedEmail }}\n

\n
\n
\n\n\n\n\n\n","import mod from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderMeta.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderMeta.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DateOrderedInput.vue?vue&type=template&id=71bc488e\"\nimport script from \"./DateOrderedInput.vue?vue&type=script&lang=js\"\nexport * from \"./DateOrderedInput.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"datetimewrapper\"},[_c('div',{staticClass:\"datewrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.dateValue),expression:\"dateValue\"}],ref:\"dateInput\",staticClass:\"text\",attrs:{\"type\":\"text\",\"autocomplete\":\"false\",\"size\":\"10\",\"placeholder\":\" \"},domProps:{\"value\":(_vm.dateValue)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.dateValue=$event.target.value},_vm.onDateInput]}}),_vm._v(\" \"),_c('div',{attrs:{\"data-icon\":\"date\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"timewrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.timeValue),expression:\"timeValue\"}],ref:\"timeInput\",staticClass:\"text\",attrs:{\"type\":\"text\",\"autocomplete\":\"false\",\"size\":\"10\",\"placeholder\":\" \"},domProps:{\"value\":(_vm.timeValue)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.timeValue=$event.target.value},_vm.onDateInput]}}),_vm._v(\" \"),_c('div',{attrs:{\"data-icon\":\"time\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OrderMeta.vue?vue&type=template&id=556d87c2\"\nimport script from \"./OrderMeta.vue?vue&type=script&lang=js\"\nexport * from \"./OrderMeta.vue?vue&type=script&lang=js\"\nimport style0 from \"./OrderMeta.vue?vue&type=style&index=0&id=556d87c2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.draft)?_c('div',{staticClass:\"order-meta-container\",class:{loading: _vm.recalculateLoading || _vm.saveLoading}},[(_vm.editing)?_c('div',{staticClass:\"meta\",attrs:{\"id\":\"settings\"}},[_c('div',{staticClass:\"field\",attrs:{\"id\":\"reference-field\"}},[_c('div',{staticClass:\"heading\"},[_c('label',{attrs:{\"id\":\"reference-label\",\"for\":\"reference\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Reference','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"input ltr\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.reference),expression:\"reference\"}],staticClass:\"text fullwidth\",attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"placeholder\":_vm.$options.filters.t('Enter reference', 'commerce')},domProps:{\"value\":(_vm.reference)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.reference=$event.target.value}}})])]),_vm._v(\" \"),_c('field',{attrs:{\"label\":_vm.$options.filters.t('Coupon Code', 'commerce'),\"errors\":_vm.getErrors('couponCode')[0]}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.couponCodeLocal),expression:\"couponCodeLocal\"}],ref:\"couponCodeInput\",staticClass:\"text fullwidth coupon-code-input\",class:{'coupon-code-invalid': _vm.couponCodeInvalid},attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"placeholder\":_vm.$options.filters.t('Enter coupon code', 'commerce')},domProps:{\"value\":(_vm.couponCodeLocal)},on:{\"focus\":_vm.onCouponCodeFocus,\"input\":[function($event){if($event.target.composing){ return; }_vm.couponCodeLocal=$event.target.value},_vm.onCouponCodeInput],\"blur\":_vm.onCouponCodeBlur,\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onCouponCodeBlur.apply(null, arguments)}}})]),_vm._v(\" \"),(_vm.order.isCompleted)?_c('field',{attrs:{\"label\":_vm.$options.filters.t('Date Ordered', 'commerce')}},[_c('date-ordered-input',{attrs:{\"date\":_vm.draft.order.dateOrdered},on:{\"update\":_vm.updateDateOrderedInput}})],1):_vm._e(),_vm._v(\" \"),_c('field',{attrs:{\"label\":_vm.$options.filters.t('Order Site', 'commerce')}},[_c('order-site',{attrs:{\"originalOrderSiteId\":_vm.originalDraft.order.orderSiteId,\"order\":_vm.order},on:{\"updateOrder\":_vm.updateOrder}})],1),_vm._v(\" \"),(!_vm.draft.order.isCompleted)?_c('div',{staticClass:\"field\",attrs:{\"id\":\"isCompleted-field\"}},[_c('div',{staticClass:\"heading\"},[_c('label',{attrs:{\"id\":\"isCompleted-label\",\"for\":\"isCompleted\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Completed','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"input ltr order-edit-mark-completed\"},[_c('div',{staticClass:\"buttons\"},[_c('input',{staticClass:\"btn small\",class:{\n disabled: !_vm.hasCustomer || _vm.recalculateLoading,\n },attrs:{\"type\":\"button\",\"value\":_vm.$options.filters.t(\n 'Mark as completed',\n 'commerce'\n ),\"disabled\":!_vm.hasCustomer || _vm.recalculateLoading},on:{\"click\":_vm.markAsCompleted}})]),_vm._v(\" \"),_c('div',[_c('label',{staticClass:\"order-edit-suppress-emails\",attrs:{\"for\":\"suppressEmails\"}},[_c('lightswitch',{attrs:{\"name\":\"suppressEmails\",\"value\":_vm.suppressEmails},on:{\"change\":_vm.handleSuppressEmailsChange}}),_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Suppress emails','commerce'))+\"\\n \")],1)])])]):_vm._e(),_vm._v(\" \"),(_vm.draft.order.isCompleted)?[_c('div',{staticClass:\"field\",attrs:{\"id\":\"orderStatus-field\"}},[_c('div',{staticClass:\"heading\"},[_c('label',{attrs:{\"id\":\"orderStatus-label\",\"for\":\"status\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Status','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"input ltr\"},[_c('order-status',{attrs:{\"originalOrderStatusId\":_vm.originalDraft.order.orderStatusId,\"original-message\":_vm.originalDraft.order.message,\"suppress-emails\":_vm.draft.order.suppressEmails,\"order\":_vm.order},on:{\"updateOrder\":_vm.updateOrder}})],1)])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"field\",attrs:{\"id\":\"shippingMethod-field\"}},[_c('div',{staticClass:\"heading\"},[_c('label',{attrs:{\"id\":\"shippingMethod-label\",\"for\":\"slug\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Shipping Method','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"input ltr\"},[_c('shipping-method',{attrs:{\"order\":_vm.order},on:{\"updateOrder\":_vm.updateOrder}})],1)])],2):_vm._e(),_vm._v(\" \"),(!_vm.editing)?_c('div',{staticClass:\"order-meta meta read-only\"},[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Reference','commerce')))]),_vm._v(\" \"),_c('p',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.reference))])]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Coupon Code','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value code\"},[_vm._v(_vm._s(_vm.draft.order.couponCode))])]),_vm._v(\" \"),(_vm.draft.order.isCompleted)?[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Date Ordered','commerce'))+\"\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.dateOrdered.date)+\"\\n \"+_vm._s(_vm.draft.order.dateOrdered.time))])])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Order Site','commerce')))]),_vm._v(\" \"),(_vm.draft.order.orderSite)?_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.orderSite.name)+\" (\"+_vm._s(_vm.draft.order.orderSite.language)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.draft.order.isCompleted)?[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Status','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\",domProps:{\"innerHTML\":_vm._s(_vm.draft.order.orderStatusHtml)}})])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"data order-meta-shipping-method\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Shipping Method','commerce')))]),_vm._v(\" \"),(_vm.draft.order.shippingMethodHandle)?_c('div',{staticClass:\"value\"},[(_vm.draft.order.shippingMethodName)?_c('span',[_vm._v(_vm._s(_vm.draft.order.shippingMethodName))]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"small code shipping-method-handle\"},[_vm._v(_vm._s(_vm.draft.order.shippingMethodHandle))])]):_vm._e()])],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"meta read-only\",attrs:{\"id\":\"meta\"}},[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('ID','commerce')))]),_vm._v(\" \"),_c('p',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.id))])]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Short Number','commerce')))]),_vm._v(\" \"),_c('div',{staticClass:\"value order-number-value\"},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.draft.order.shortNumber)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"hidden-input\"},[_c('input',{ref:\"orderShortNumber\",attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.draft.order.shortNumber}})]),_vm._v(\" \"),_c('btn-link',{on:{\"click\":function($event){return _vm.copy(_vm.$refs.orderShortNumber)}}},[_vm._v(_vm._s(_vm._f(\"t\")('Copy','commerce')))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Number','commerce')))]),_vm._v(\" \"),_c('div',{staticClass:\"value order-number-value\"},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.draft.order.number)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"hidden-input\"},[_c('input',{ref:\"orderNumber\",attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.draft.order.number}})]),_vm._v(\" \"),_c('btn-link',{on:{\"click\":function($event){return _vm.copy(_vm.$refs.orderNumber)}}},[_vm._v(_vm._s(_vm._f(\"t\")('Copy','commerce')))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Store','commerce')))]),_vm._v(\" \"),_c('p',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.store.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Paid Status','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\",domProps:{\"innerHTML\":_vm._s(_vm.draft.order.paidStatusHtml)}})]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Total Price','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.totalPriceAsCurrency))])]),_vm._v(\" \"),(_vm.draft.order.totalPaid != 0)?[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Paid Amount','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.totalPaidAsCurrency))])])]:_vm._e(),_vm._v(\" \"),(!_vm.draft.order.datePaid && _vm.draft.order.dateAuthorized)?[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Date Authorized','commerce'))+\"\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.dateAuthorized.date)+\"\\n \"+_vm._s(_vm.draft.order.dateAuthorized.time))])])]:_vm._e(),_vm._v(\" \"),(_vm.draft.order.datePaid)?[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Date Paid','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.datePaid.date)+\"\\n \"+_vm._s(_vm.draft.order.datePaid.time))])])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Last Updated','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.dateUpdated.date)+\"\\n \"+_vm._s(_vm.draft.order.dateUpdated.time))])]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('IP Address','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.lastIp))])]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Origin','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.originLabel(_vm.draft.order.origin)))])]),_vm._v(\" \"),(\n _vm.draft.order.orderCompletedEmail &&\n _vm.draft.order.orderCompletedEmail != _vm.draft.order.email\n )?_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Completed Email','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.orderCompletedEmail))])]):_vm._e()],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderNotices.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderNotices.vue?vue&type=script&lang=js\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./OrderNotices.vue?vue&type=template&id=8e45959c\"\nimport script from \"./OrderNotices.vue?vue&type=script&lang=js\"\nexport * from \"./OrderNotices.vue?vue&type=script&lang=js\"\nimport style0 from \"./OrderNotices.vue?vue&type=style&index=0&id=8e45959c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"order-notices-wrapper\"},[(_vm.showAdminNotices)?_c('div',{staticClass:\"meta read-only order-admin-notices\"},[_c('div',{staticClass:\"order-flex order-notices-header\"},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Admin Notices','commerce'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"order-notices-items\"},_vm._l((_vm.adminNotices),function(notice){return _c('div',{key:notice.id},[_c('hr'),_vm._v(\" \"),_c('div',{staticClass:\"order-flex order-notices-item order-admin-notice-item\"},[_c('div',[_vm._v(_vm._s(notice.message))]),_vm._v(\" \"),(_vm.editing)?_c('div',[_c('button',{staticClass:\"btn small\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissAdminNotice(notice)}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Clear','commerce'))+\"\\n \")])]):_vm._e()])])}),0)]):_vm._e(),_vm._v(\" \"),(_vm.showNotices)?_c('div',{staticClass:\"meta read-only warning order-customer-notices\"},[_c('div',{staticClass:\"order-flex order-notices-header\"},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Customer Notices','commerce'))+\"\\n \")]),_vm._v(\" \"),(_vm.editing)?_c('div',[_c('button',{staticClass:\"btn small\",on:{\"click\":function($event){$event.preventDefault();return _vm.clearNotices.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Clear notices','commerce'))+\"\\n \")])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"order-notices-items\"},_vm._l((_vm.regularNotices),function(notice){return _c('div',{key:notice.id},[_c('hr'),_vm._v(\" \"),_c('div',{staticClass:\"order-notices-item\"},[_vm._v(\"\\n \"+_vm._s(notice.message)+\"\\n \")])])}),0)]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OptionShortcutLabel.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OptionShortcutLabel.vue?vue&type=script&lang=js\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./OptionShortcutLabel.vue?vue&type=template&id=e4cdb9c2\"\nimport script from \"./OptionShortcutLabel.vue?vue&type=script&lang=js\"\nexport * from \"./OptionShortcutLabel.vue?vue&type=script&lang=js\"\nimport style0 from \"./OptionShortcutLabel.vue?vue&type=style&index=0&id=e4cdb9c2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"option-shortcut-label\"},[(_vm.os === 'mac')?[_c('span',{staticClass:\"shortcut\"},[_vm._v(_vm._s((_vm.alt ? '⌥' : '') + (_vm.shift ? '⇧' : '') + '⌘' + _vm.shortcutKey))])]:[_c('span',{staticClass:\"shortcut\"},[_vm._v(_vm._s('Ctrl+' +\n (_vm.alt ? 'Alt+' : '') +\n (_vm.shift ? 'Shift+' : '') +\n _vm.shortcutKey))])]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderActions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderActions.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UpdateOrderBtn.vue?vue&type=template&id=ccf7514e\"\nimport script from \"./UpdateOrderBtn.vue?vue&type=script&lang=js\"\nexport * from \"./UpdateOrderBtn.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"order-flex\",attrs:{\"id\":\"order-save\"}},[(_vm.editing)?[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.orderData),expression:\"orderData\"}],attrs:{\"type\":\"hidden\",\"name\":\"orderData\",\"id\":\"test\"},domProps:{\"value\":(_vm.orderData)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.orderData=$event.target.value}}}),_vm._v(\" \"),_c('input',{staticClass:\"btn submit\",class:{disabled: !_vm.hasCustomer || _vm.recalculateLoading},attrs:{\"id\":\"order-save-btn\",\"type\":\"button\",\"value\":_vm.$options.filters.t('Update order', 'commerce'),\"disabled\":!_vm.hasCustomer || _vm.recalculateLoading},on:{\"click\":function($event){return _vm.save()}}}),_vm._v(\" \"),_c('div',{staticClass:\"spacer\"})]:_vm._e(),_vm._v(\" \"),_c('div',[_c('div',{ref:\"updateMenuBtn\",staticClass:\"btn menubtn\",attrs:{\"data-icon\":\"settings\",\"title\":_vm.$options.filters.t('Actions', 'commerce')}}),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[(_vm.editing && _vm.hasCustomer && _vm.hasAddresses)?[_c('ul',[_c('li',[_c('a',{on:{\"click\":function($event){return _vm.save({redirect: _vm.ordersIndexUrl})}}},[_c('option-shortcut-label',{attrs:{\"os\":\"mac\",\"shortcut-key\":\"S\"}}),_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Save and return to all orders','commerce'))+\"\\n \")],1)])])]:_vm._e(),_vm._v(\" \"),(_vm.draft && !_vm.draft.order.isCompleted)?[_c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.copy()}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Share cart…','commerce'))+\"\\n \")])])])]:_vm._e(),_vm._v(\" \"),(_vm.canDelete)?[(_vm.editing && _vm.hasCustomer && _vm.hasAddresses)?[_c('hr')]:_vm._e(),_vm._v(\" \"),_c('ul',[_c('li',[_c('a',{staticClass:\"error\",on:{\"click\":function($event){return _vm.deleteOrder()}}},[_vm._v(_vm._s(_vm._f(\"t\")('Delete','commerce')))])])])]:_vm._e()],2)])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OrderActions.vue?vue&type=template&id=51d2e19e\"\nimport script from \"./OrderActions.vue?vue&type=script&lang=js\"\nexport * from \"./OrderActions.vue?vue&type=script&lang=js\"\nimport style0 from \"./OrderActions.vue?vue&type=style&index=0&id=51d2e19e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canEdit)?_c('div',{staticClass:\"order-flex\"},[_c('div',{staticClass:\"order-edit-action-buttons\"},[(_vm.saveLoading)?_c('div',{staticClass:\"spinner\",attrs:{\"id\":\"order-save-spinner\"}}):_vm._e(),_vm._v(\" \"),(!_vm.editing)?[_c('input',{staticClass:\"btn\",attrs:{\"id\":\"order-edit-btn\",\"type\":\"button\",\"value\":_vm.$options.filters.t('Edit', 'commerce')},on:{\"click\":function($event){return _vm.edit()}}})]:[_c('input',{staticClass:\"btn\",attrs:{\"id\":\"order-cancel-btn\",\"type\":\"button\",\"value\":_vm.$options.filters.t('Cancel', 'commerce')},on:{\"click\":function($event){return _vm.cancel()}}})]],2),_vm._v(\" \"),(_vm.editing || _vm.canDelete)?[_c('update-order-btn',{ref:\"updateOrderBtn\"})]:_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./Customer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./Customer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Customer.vue?vue&type=template&id=12d07da8\"\nimport script from \"./Customer.vue?vue&type=script&lang=js\"\nexport * from \"./Customer.vue?vue&type=script&lang=js\"\nimport style0 from \"./Customer.vue?vue&type=style&index=0&id=12d07da8&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"customer-wrapper\"},[(_vm.customer)?_c('div',{staticClass:\"order-flex align-center\",class:{'customer-display': _vm.display}},[_c('div',{staticClass:\"customer-photo-wrapper\"},[_c('div',{staticClass:\"customer-photo order-flex justify-center align-center\",class:_vm.avatarClass},[(_vm.customer.photo && _vm.customer.photoThumbUrl)?_c('img',{staticClass:\"w-full\",attrs:{\"src\":_vm.customer.photoThumbUrl,\"alt\":_vm.customer.email}}):_c('div',{class:_vm.getBgColor(_vm.initialChar)},[_vm._v(\"\\n \"+_vm._s(_vm.initialChar)+\"\\n \")])]),_vm._v(\" \"),_c('span',{staticClass:\"status\",class:_vm.customer.status})]),_vm._v(\" \"),_c('div',{staticClass:\"customer-info-container ml-1\"},[(_vm.getDisplayName(false))?_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.getDisplayName(false))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"w-full light\"},[_vm._v(_vm._s(_vm.customer.email))]),_vm._v(\" \"),(_vm.display && _vm.customer.cpEditUrl && _vm.canEditUsers)?_c('div',{staticClass:\"w-full\"},[(_vm.customer.cpEditUrl)?_c('a',{attrs:{\"href\":_vm.customer.cpEditUrl}},[_vm._v(_vm._s(_vm.$options.filters.t('View customer', 'commerce')))]):_vm._e()]):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.showRemove)?_c('button',{staticClass:\"customer-remove delete icon\",attrs:{\"type\":\"button\",\"title\":_vm.$options.filters.t('Remove', 'commerce'),\"aria-label\":_vm.removeButtonLabel},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('remove')}}}):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressSelect.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressSelect.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AddressSelect.vue?vue&type=template&id=4c88f931&scoped=true\"\nimport script from \"./AddressSelect.vue?vue&type=script&lang=js\"\nexport * from \"./AddressSelect.vue?vue&type=script&lang=js\"\nimport style1 from \"./AddressSelect.vue?vue&type=style&index=1&id=4c88f931&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c88f931\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.customerId)?_c('div',{staticClass:\"order-edit-address-select menu-item\",attrs:{\"data-icon\":\"list\"}},[_c('button',{class:{disabled: !_vm.canSelectAddress},attrs:{\"disabled\":!_vm.canSelectAddress},on:{\"click\":function($event){$event.preventDefault();return _vm.open.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Select address', 'commerce'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"hidden\"},[_c('div',{ref:\"addressselectmodal\",staticClass:\"order-edit-modal order-edit-modal--address-select modal fitted\"},[_c('div',{staticClass:\"body\"},[_vm._l((_vm.addresses),function(address,index){return _c('div',{key:index},[_c('label',{class:{\n selected:\n _vm.selectedAddress &&\n address.id == _vm.selectedAddress.id,\n }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedAddress),expression:\"selectedAddress\"}],staticClass:\"visually-hidden\",attrs:{\"type\":\"radio\",\"name\":'address-select-' + _vm.addressModel},domProps:{\"value\":address,\"checked\":_vm._q(_vm.selectedAddress,address)},on:{\"change\":function($event){_vm.selectedAddress=address}}}),_vm._v(\" \"),_c('ul',{domProps:{\"innerHTML\":_vm._s(address.html)}})])])}),_vm._v(\" \"),(_vm.isLoadMoreVisible)?_c('div',{staticClass:\"order-edit-modal-load-more\"},[_c('div',[_c('btn-link',{attrs:{\"button-class\":\"btn\"},on:{\"click\":_vm.loadMore}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Load more', 'commerce'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"spinner\",class:{hidden: !_vm.isLoadingMore}})],1)]):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('div',{staticClass:\"buttons right\"},[_c('btn-link',{attrs:{\"button-class\":\"btn\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$options.filters.t('Cancel', 'commerce')))]),_vm._v(\" \"),_c('btn-link',{class:{disabled: _vm.isDoneDisabled},attrs:{\"button-class\":\"btn submit\",\"disabled\":_vm.isDoneDisabled},on:{\"click\":_vm.done}},[_vm._v(_vm._s(_vm.$options.filters.t('Done', 'commerce')))])],1)])])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressEdit.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressEdit.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AddressEdit.vue?vue&type=template&id=c12c0a6c\"\nimport script from \"./AddressEdit.vue?vue&type=script&lang=js\"\nexport * from \"./AddressEdit.vue?vue&type=script&lang=js\"\nimport style0 from \"./AddressEdit.vue?vue&type=style&index=0&id=c12c0a6c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\"},[_c('div',{staticClass:\"order-address-display\"},[(_vm.address)?[_c('ul',{ref:\"address\",domProps:{\"innerHTML\":_vm._s(_vm.address)},on:{\"click\":_vm.handleEditAddress}})]:[_c('div',{staticClass:\"zilch\"},[_vm._v(_vm._s(_vm.emptyMsg))])],_vm._v(\" \"),_c('button',{ref:\"disclosureMenu\",staticClass:\"btn menubtn action-btn\",attrs:{\"type\":\"button\",\"title\":\"Actions\",\"aria-controls\":_vm.disclosureId,\"data-disclosure-trigger\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"menu menu--disclosure\",attrs:{\"id\":_vm.disclosureId}},[_c('ul',[_c('li',[_c('button',{staticClass:\"menu-item\",class:{disabled: !_vm.address},attrs:{\"disabled\":!_vm.address,\"data-icon\":\"edit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleEditAddress.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Edit address', 'commerce'))+\"\\n \")])]),_vm._v(\" \"),_c('li',[_c('address-select',{attrs:{\"customer-id\":_vm.customerId},on:{\"update\":_vm.handleSelect}})],1),_vm._v(\" \"),_c('li',[_c('button',{staticClass:\"menu-item\",attrs:{\"data-icon\":\"plus\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleNewAddress.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('New address', 'commerce'))+\"\\n \")])]),_vm._v(\" \"),(_vm.copyToAddress)?_c('li',[_c('button',{staticClass:\"menu-item\",class:{disabled: !_vm.address},attrs:{\"disabled\":!_vm.address,\"data-icon\":\"clipboard\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleCopy.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t(\n 'Copy to {location}',\n 'commerce',\n {location: _vm.copyToAddress}\n ))+\"\\n \")])]):_vm._e(),_vm._v(\" \"),_c('li',[_c('button',{staticClass:\"menu-item\",class:{disabled: !_vm.address || !_vm.canCopyToUser},attrs:{\"disabled\":!_vm.address,\"data-icon\":\"clipboard\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleCopyToUser.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t(\n 'Copy to {location}',\n 'commerce',\n {\n location: _vm.$options.filters.t(\n 'User',\n 'commerce'\n ),\n }\n ))+\"\\n \")])])]),_vm._v(\" \"),_c('hr',{staticClass:\"padded\"}),_vm._v(\" \"),_c('ul',{staticClass:\"padded\"},[_c('li',[_c('button',{staticClass:\"error menu-item\",class:{disabled: !_vm.address},attrs:{\"disabled\":!_vm.address,\"data-icon\":\"trash\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleRemove.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Remove address', 'commerce'))+\"\\n \")])])])])],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n \n \n\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomerSelect.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomerSelect.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CustomerSelect.vue?vue&type=template&id=c338ae24\"\nimport script from \"./CustomerSelect.vue?vue&type=script&lang=js\"\nexport * from \"./CustomerSelect.vue?vue&type=script&lang=js\"\nimport style0 from \"./CustomerSelect.vue?vue&type=style&index=0&id=c338ae24&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('select-input',{ref:\"vSelect\",staticClass:\"customer-select\",attrs:{\"label\":\"email\",\"options\":_vm.customers,\"filterable\":false,\"clearable\":false,\"pre-filtered\":true,\"create-option\":_vm.createOption,\"placeholder\":_vm.$options.filters.t('Search or enter customer email…', 'commerce'),\"clear-search-on-blur\":false,\"taggable\":\"\"},on:{\"input\":_vm.onChange,\"search\":_vm.onSearch,\"created\":_vm.onCreated},scopedSlots:_vm._u([{key:\"option\",fn:function(slotProps){return [(\n slotProps.option.id ||\n (!slotProps.option.id && !_vm.customers.length)\n )?_c('div',{staticClass:\"customer-select-option\"},[(\n !slotProps.option.id &&\n !_vm.customers.length &&\n _vm.$v.newCustomerEmail.$invalid\n )?[_c('div',{staticClass:\"order-flex justify-center\"},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t(\n 'A valid email is required to create a customer.',\n 'commerce'\n ))+\"\\n \")])])]:(\n !slotProps.option.id &&\n !_vm.$v.newCustomerEmail.$invalid &&\n !_vm.customers.length\n )?[_c('div',{staticClass:\"order-flex align-center\"},[_c('div',{staticClass:\"customer-photo-wrapper\"},[_c('div',{staticClass:\"customer-photo order-flex customer-photo--initial customer-photo--email justify-center align-center\"},[_c('span',{staticClass:\"icon\",attrs:{\"data-icon\":\"plus\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"ml-1\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Create customer: “{email}”','commerce', {\n email: slotProps.option.email,\n }))+\"\\n \")])])]:(slotProps.option.id)?[_c('div',[_c('customer',{attrs:{\"customer\":slotProps.option}})],1)]:_vm._e()],2):_vm._e()]}}]),model:{value:(_vm.selectedCustomer),callback:function ($$v) {_vm.selectedCustomer=$$v},expression:\"selectedCustomer\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n
\n \n \n \n \n \n \n

\n {{\n $options.filters.t('Notice', 'app')\n }}\n {{\n $options.filters.t(\n 'The customer for this order has been deleted.',\n 'commerce'\n )\n }}\n

\n \n
\n

\n\n \n
\n \n \n
\n
\n \n \n
\n\n \n \n
\n\n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderCustomer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderCustomer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./OrderCustomer.vue?vue&type=template&id=9869829e\"\nimport script from \"./OrderCustomer.vue?vue&type=script&lang=js\"\nexport * from \"./OrderCustomer.vue?vue&type=script&lang=js\"\nimport style0 from \"./OrderCustomer.vue?vue&type=style&index=0&id=9869829e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.draft)?_c('div',{class:{'order-opacity-50': _vm.recalculateLoading || _vm.saveLoading}},[_c('div',[_c('div',{staticClass:\"order-flex justify-between align-center pb\"},[_c('h3',{staticClass:\"m-0\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Customer', 'commerce'))+\"\\n \")]),_vm._v(\" \"),(_vm.hasCustomer && _vm.canEdit && (!_vm.editing || !_vm.editMode))?[_c('btn-link',{on:{\"click\":function($event){return _vm.enableEditMode()}}},[_vm._v(_vm._s(_vm.$options.filters.t('Edit', 'commerce')))])]:_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"customer-select-wrapper\",class:{'customer-select-wrapper--selecting': !_vm.hasCustomer}},[(_vm.hasCustomer)?_c('customer',{attrs:{\"customer\":_vm.customer,\"display\":true,\"show-remove\":_vm.editing && _vm.editMode},on:{\"remove\":_vm.removeCustomer}}):_vm._e(),_vm._v(\" \"),(\n !_vm.hasCustomer &&\n ((_vm.editing && _vm.editMode) || !_vm.draft.order.customerDeleted)\n )?[_c('customer-select',{attrs:{\"order\":_vm.draft.order},on:{\"update\":_vm.updateCustomer}})]:(!_vm.hasCustomer && _vm.draft.order.customerDeleted)?[_c('p',{staticClass:\"warning has-icon\"},[_c('span',{staticClass:\"icon\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"visually-hidden\"},[_vm._v(_vm._s(_vm.$options.filters.t('Notice', 'app')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$options.filters.t(\n 'The customer for this order has been deleted.',\n 'commerce'\n )))])])]:_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"order-flex order-box-sizing px-4 -mx-4\",class:{pt: _vm.hasCustomer || _vm.hasAnAddress}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.editing || !_vm.editMode),expression:\"!editing || !editMode\"}],staticClass:\"w-1/2 pr\"},[(_vm.draft && _vm.draft.order.billingAddressHtml)?[_c('ul',{staticClass:\"order-address-display order-address-display--static\",domProps:{\"innerHTML\":_vm._s(_vm.draft.order.billingAddressHtml)}})]:[_c('div',{staticClass:\"zilch\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('No billing address', 'commerce'))+\"\\n \")])]],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.editing || !_vm.editMode),expression:\"!editing || !editMode\"}],staticClass:\"w-1/2 pl\"},[(_vm.draft && _vm.draft.order.shippingAddressHtml)?[_c('ul',{staticClass:\"order-address-display order-address-display--static\",domProps:{\"innerHTML\":_vm._s(_vm.draft.order.shippingAddressHtml)}})]:[_c('div',{staticClass:\"zilch\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t(\n 'No shipping address',\n 'commerce'\n ))+\"\\n \")])]],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n ((!_vm.hasCustomer && _vm.draft.order.isCompleted) ||\n _vm.hasCustomer) &&\n _vm.editing &&\n _vm.editMode\n ),expression:\"\\n ((!hasCustomer && draft.order.isCompleted) ||\\n hasCustomer) &&\\n editing &&\\n editMode\\n \"}],staticClass:\"w-1/2 pr\"},[_c('address-edit',{attrs:{\"title\":_vm.titles.billingAddress,\"model-name\":\"billing\",\"address\":_vm.draft.order.billingAddressHtml,\"copy-to-address\":_vm.$options.filters.t('shipping address', 'commerce'),\"can-copy-to-user\":_vm.canEditUsers &&\n _vm.draft.order.sourceBillingAddressId == null &&\n _vm.customerId &&\n _vm.draft.order.customer.isCredentialed,\"customer-id\":_vm.draft.order.customerId,\"empty-message\":_vm.$options.filters.t('No billing address', 'commerce'),\"customer-updated\":_vm.customerUpdatedTime},on:{\"update\":_vm.updateBillingAddress,\"copy\":function($event){return _vm.copyAddress('shipping')},\"copyAddressToUser\":function($event){return _vm.copyToUser('billing')},\"remove\":_vm.removeBillingAddress}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n ((!_vm.hasCustomer && _vm.draft.order.isCompleted) ||\n _vm.hasCustomer) &&\n _vm.editing &&\n _vm.editMode\n ),expression:\"\\n ((!hasCustomer && draft.order.isCompleted) ||\\n hasCustomer) &&\\n editing &&\\n editMode\\n \"}],staticClass:\"w-1/2 pl\"},[_c('address-edit',{attrs:{\"title\":_vm.titles.shippingAddress,\"model-name\":\"shipping\",\"address\":_vm.draft.order.shippingAddressHtml,\"copy-to-address\":_vm.$options.filters.t('billing address', 'commerce'),\"can-copy-to-user\":_vm.canEditUsers &&\n _vm.draft.order.sourceShippingAddressId == null &&\n _vm.customerId &&\n _vm.draft.order.customer.isCredentialed,\"customer-id\":_vm.draft.order.customerId,\"empty-message\":_vm.$options.filters.t('No shipping address', 'commerce'),\"customer-updated\":_vm.customerUpdatedTime},on:{\"update\":_vm.updateShippingAddress,\"copy\":function($event){return _vm.copyAddress('billing')},\"copyAddressToUser\":function($event){return _vm.copyToUser('shipping')},\"remove\":_vm.removeShippingAddress}})],1)])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OrderErrors.vue?vue&type=template&id=f3765d52\"\nimport script from \"./OrderErrors.vue?vue&type=script&lang=js\"\nexport * from \"./OrderErrors.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{'pb-lg': _vm.draftErrors.length}},[(_vm.draftErrors.length)?[_c('h4',{staticClass:\"error\"},[_vm._v(\"\\n \"+_vm._s(this.$options.filters.t(\n 'There are errors on the order',\n 'commerce'\n ))+\"\\n \")]),_vm._v(\" \"),_c('ul',{staticClass:\"errors\"},_vm._l((_vm.draftErrors),function(error,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(error)+\"\\n \")])}),0)]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n {{ 'This order has unsaved changes.' | t('commerce') }}\n
\n \n\n\n\n\n\n","import mod from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderSecondaryActions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.29.7_supports-color@9.4.0__webpack@5.111.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderSecondaryActions.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./OrderSecondaryActions.vue?vue&type=template&id=0a8bd144\"\nimport script from \"./OrderSecondaryActions.vue?vue&type=script&lang=js\"\nexport * from \"./OrderSecondaryActions.vue?vue&type=script&lang=js\"\nimport style0 from \"./OrderSecondaryActions.vue?vue&type=style&index=0&id=0a8bd144&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.editing && !_vm.hasOrderChanged)?_c('div',{staticClass:\"order-flex\"},[(_vm.defaultPdfUrl)?_c('div',[_c('div',{staticClass:\"btngroup\",attrs:{\"id\":\"order-save\"}},[_c('a',{staticClass:\"btn\",attrs:{\"href\":_vm.defaultPdfUrl.url,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Download PDF','commerce')))]),_vm._v(\" \"),(_vm.pdfUrls.length > 1)?[_c('div',{ref:\"downloadPdfMenuBtn\",staticClass:\"btn menubtn\"}),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',_vm._l((_vm.pdfUrls),function(pdfUrl,key){return _c('li',{key:'pdfUrl' + key},[_c('a',{attrs:{\"href\":pdfUrl.url,\"target\":\"_blank\"}},[_vm._v(_vm._s(pdfUrl.name))])])}),0)])]:_vm._e()],2)]):_vm._e(),_vm._v(\" \"),(_vm.emailTemplates.length > 0)?[_c('div',{staticClass:\"btngroup send-email\"},[_c('div',{ref:\"sendEmailMenuBtn\",staticClass:\"btn menubtn\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Send Email','commerce'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',_vm._l((_vm.emailTemplates),function(emailTemplate,key){return _c('li',{key:'emailTemplate' + key},[_c('a',{attrs:{\"href\":emailTemplate.id},on:{\"click\":function($event){$event.preventDefault();return _vm.sendEmail(emailTemplate.id)}}},[_vm._v(_vm._s(emailTemplate.name))])])}),0)])]),_vm._v(\" \"),(_vm.emailLoading)?_c('div',[_vm._m(0)]):_vm._e()]:_vm._e(),_vm._v(\" \"),(\n !_vm.editing &&\n _vm.totalCommittedStock > 0 &&\n !_vm.hasOrderChanged &&\n _vm.hasLineItems\n )?[_c('button',{staticClass:\"btn fulfillment\",on:{\"click\":function($event){$event.preventDefault();return _vm.handleFulfillment.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Fulfillment','commerce'))+\"\\n \")])]:_vm._e()],2):(_vm.hasOrderChanged)?_c('div',[_c('span',[_vm._v(_vm._s(_vm._f(\"t\")('This order has unsaved changes.','commerce')))])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"order-email-spinner\"},[_c('div',{staticClass:\"spinner\"})])}]\n\nexport { render, staticRenderFns }","/* jshint esversion: 6, strict: false */\n/* globals Craft */\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport ordersApi from '../api/orders';\nimport addressesApi from '../api/addresses';\nimport utils from '../helpers/utils';\nimport _isEqual from 'lodash.isequal';\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n strict: true,\n state: {\n recalculateLoading: false,\n saveLoading: false,\n editing: false,\n draft: null,\n originalDraft: null,\n customers: [],\n orderData: null,\n recentlyAddedLineItems: [],\n unloadEventInit: false,\n shippingMethodOptions: null,\n },\n\n getters: {\n autoSetNewCartAddresses() {\n return window.orderEdit.autoSetNewCartAddresses;\n },\n\n currentUserId() {\n return window.orderEdit.currentUserId;\n },\n\n currentUserPermissions() {\n return window.orderEdit.currentUserPermissions;\n },\n\n canDelete(state, getters) {\n return getters.currentUserPermissions['commerce-deleteOrders'];\n },\n\n canEdit(state, getters) {\n return getters.currentUserPermissions['commerce-editOrders'];\n },\n\n canEditUsers(state, getters) {\n return getters.currentUserPermissions['editUsers'];\n },\n\n countries() {\n return window.orderEdit.countries;\n },\n\n currencyConfig() {\n return window.orderEdit.currencyConfig;\n },\n\n forceEdit() {\n return window.orderEdit.forceEdit;\n },\n\n emailTemplates() {\n return window.orderEdit.emailTemplates;\n },\n\n ordersIndexUrl() {\n return window.orderEdit.ordersIndexUrl;\n },\n\n hasOrderChanged(state) {\n return !_isEqual(state.draft, state.originalDraft);\n },\n\n orderId() {\n return window.orderEdit.orderId;\n },\n\n totalCommittedStock(state) {\n if (!state.draft) {\n return 0;\n }\n\n return state.draft.order.totalCommittedStock;\n },\n\n taxCategories() {\n return window.orderEdit.taxCategories;\n },\n\n defaultTaxCategoryId() {\n return window.orderEdit.defaultTaxCategoryId;\n },\n\n shippingCategories() {\n return window.orderEdit.shippingCategories;\n },\n\n defaultShippingCategoryId() {\n return window.orderEdit.defaultShippingCategoryId;\n },\n\n statesByCountryId() {\n return window.orderEdit.statesByCountryId;\n },\n\n pdfUrls() {\n return window.orderEdit.pdfUrls;\n },\n\n originalCustomer() {\n return window.orderEdit.originalCustomer;\n },\n\n maxLineItems(state, getters) {\n return null;\n },\n\n canAddLineItem(state, getters) {\n if (!getters.maxLineItems) {\n return true;\n }\n\n if (state.draft.order.lineItems.length < getters.maxLineItems) {\n return true;\n }\n\n return false;\n },\n\n hasAddresses(state) {\n if (!state.draft) {\n return false;\n }\n\n return (\n (state.draft.order.billingAddressId &&\n state.draft.order.shippingAddressId) ||\n (state.draft.order.billingAddress && state.draft.order.shippingAddress)\n );\n },\n\n hasAnAddress(state) {\n if (!state.draft) {\n return false;\n }\n\n return (\n state.draft.order.billingAddressId ||\n state.draft.order.shippingAddressId ||\n state.draft.order.billingAddress ||\n state.draft.order.shippingAddress\n );\n },\n\n hasCustomer(state) {\n if (!state.draft) {\n return false;\n }\n\n return state.draft.order.customerId;\n },\n\n hasLineItems(state) {\n if (!state.draft || !state.draft.order || !state.draft.order.lineItems) {\n return false;\n }\n\n return state.draft.order.lineItems.length > 0;\n },\n\n lineItemStatuses() {\n return window.orderEdit.lineItemStatuses;\n },\n\n lineItemTypes() {\n return window.orderEdit.lineItemTypes;\n },\n\n shippingMethods(state) {\n if (!state.shippingMethodOptions) {\n return [];\n }\n\n return Object.values(state.shippingMethodOptions);\n },\n\n orderStatuses() {\n return window.orderEdit.orderStatuses;\n },\n\n orderSites() {\n return window.orderEdit.orderSites;\n },\n\n store() {\n return window.orderEdit.store;\n },\n\n getErrors(state) {\n return (errorKey) => {\n if (\n state &&\n state.draft &&\n state.draft.order &&\n state.draft.errors &&\n state.draft.errors[errorKey]\n ) {\n return [state.draft.errors[errorKey]];\n }\n\n return [];\n };\n },\n\n hasLineItemErrors(state) {\n return (key) => {\n if (state && state.draft && state.draft.order && state.draft.errors) {\n let errorKeys = Object.keys(state.draft.errors);\n let pattern = '^lineItems\\\\.' + key + '\\\\.';\n let regex = new RegExp(pattern, 'gm');\n for (let i = 0; i < errorKeys.length; i++) {\n let errorKey = errorKeys[i];\n if (errorKey.match(regex)) {\n return true;\n }\n }\n }\n\n return false;\n };\n },\n\n userPhotoFallback() {\n return window.orderEdit.userPhotoFallback;\n },\n },\n\n actions: {\n displayError(context, msg) {\n // Check if `msg` is instance of JavaScript Error object\n if (msg instanceof Error) {\n msg = msg.message;\n }\n\n Craft.cp.displayError(msg);\n },\n\n displayNotice(context, msg) {\n Craft.cp.displayNotice(msg);\n },\n\n disableTransactionsTab() {\n const $transactionsTab = window.document.querySelector(\n '#tabs > div > a[href=\"#transactionsTab\"]'\n );\n\n if (!$transactionsTab) {\n return;\n }\n\n $transactionsTab.classList.add('disabled');\n $transactionsTab.href = '';\n $transactionsTab.classList.remove('sel');\n\n const $transactionsTabClone = $transactionsTab.cloneNode(true);\n\n $transactionsTabClone.addEventListener('click', function (ev) {\n ev.preventDefault();\n });\n\n $transactionsTab.parentNode.replaceChild(\n $transactionsTabClone,\n $transactionsTab\n );\n\n let $transactionsTabContent =\n window.document.querySelector('#transactionsTab');\n $transactionsTabContent.classList.add('hidden');\n\n // for the dropdown tab menu\n const tabManager = Craft.cp.tabManager;\n const tabsDropdownMenu = tabManager.$menuBtn.data('disclosureMenu');\n const transactionsOption = tabsDropdownMenu.$container.find(\n '[data-id=\"order-transactions\"]'\n );\n\n // this will disable clicking on the transactions option in the dropdown tab menu\n if (transactionsOption.length > 0) {\n $(transactionsOption)\n .disable()\n .attr('disabled', 'disabled')\n .css('pointer-events', 'none');\n }\n\n // and this is a fallback for selecting the transactions tab differently\n let $prevSelectedTab = null;\n let $selectedTab = tabManager.$selectedTab[0];\n\n tabManager.on('selectTab', function (ev) {\n $prevSelectedTab = $selectedTab;\n $selectedTab = $(ev.$tab[0]);\n });\n\n tabsDropdownMenu.on('optionselect', function (ev) {\n let $selectedOption = $(ev.selectedOption);\n if ($selectedOption.data('id') === 'order-transactions') {\n $prevSelectedTab.trigger('activate');\n }\n });\n },\n\n edit({commit, state, dispatch}) {\n const $tabLinks = window.document.querySelectorAll('#tabs > div > a');\n let $selectedLink = null;\n let $detailsLink = null;\n let switchToDetailsTab = false;\n\n $tabLinks.forEach(function ($tabLink) {\n if (\n $tabLink.getAttribute('href') === '#orderDetailsTab' &&\n state.draft.order.isCompleted\n ) {\n $detailsLink = $tabLink;\n }\n\n // Disable Transactions tab\n if (\n $tabLink.getAttribute('href') === '#transactionsTab' &&\n state.draft.order.isCompleted\n ) {\n switchToDetailsTab = $tabLink.classList.contains('sel');\n dispatch('disableTransactionsTab');\n }\n\n // Custom tabs\n if ($tabLink.classList.contains('custom-tab')) {\n // Selected link\n if ($tabLink.classList.contains('sel')) {\n $selectedLink = $tabLink;\n }\n\n // Disable static custom field tabs\n if ($tabLink.classList.contains('static')) {\n $tabLink.classList.add('hidden');\n } else {\n $tabLink.classList.remove('hidden');\n }\n }\n });\n\n if (switchToDetailsTab) {\n $detailsLink.classList.add('sel');\n let $detailsTab = window.document.querySelector('#orderDetailsTab');\n $detailsTab.classList.remove('hidden');\n }\n\n // Retrieve dynamic link corresponding to selected static one and click it\n if ($selectedLink && $selectedLink.classList.contains('static')) {\n const staticLink = $selectedLink.getAttribute('href');\n let prefixLength = '#static-'.length;\n const dynamicLink =\n '#' +\n staticLink.substr(prefixLength, staticLink.length - prefixLength);\n\n $tabLinks.forEach(function ($tabLink) {\n if (\n $tabLink.classList.contains('custom-tab') &&\n $tabLink.getAttribute('href') === dynamicLink\n ) {\n const $newSelectedLink = $tabLink;\n $newSelectedLink.click();\n }\n });\n }\n\n // Update `editing` state\n commit('updateEditing', true);\n\n // handle duplicate content (fields) tabs\n dispatch('handleTabs');\n },\n\n handleTabs({state}) {\n const tabManager = Craft.cp.tabManager;\n if (!tabManager || !tabManager.menu) {\n return;\n }\n\n const staticOptions = tabManager.menu.find(\n 'a[data-id^=\"static-fields-\"]'\n );\n const fieldsOptions = tabManager.menu.find('a[data-id^=\"fields-\"]');\n\n if (state.editing) {\n staticOptions.parent().addClass('hidden');\n fieldsOptions.parent().removeClass('hidden');\n } else {\n staticOptions.parent().removeClass('hidden');\n fieldsOptions.parent().addClass('hidden');\n }\n },\n\n getOrder({state, commit}) {\n commit('updateRecalculateLoading', true);\n\n return ordersApi\n .get()\n .then((response) => {\n commit('updateRecalculateLoading', false);\n\n const draft = response.data;\n\n if (!state.originalDraft) {\n const originalDraft = draft;\n commit('updateOriginalDraft', originalDraft);\n }\n\n commit('updateDraft', draft);\n })\n .catch((error) => {\n commit('updateRecalculateLoading', false);\n\n let errorMsg = 'Couldn’t get order.';\n\n if (error.response.data.error) {\n errorMsg = error.response.data.error;\n }\n\n throw errorMsg;\n });\n },\n\n deleteOrder({getters, commit}) {\n commit('updateRecalculateLoading', true);\n\n const orderId = getters.orderId;\n\n return ordersApi.deleteOrder(orderId).then(() => {\n commit('updateRecalculateLoading', false);\n });\n },\n\n customerSearch({commit}, query) {\n return ordersApi.customerSearch(query).then((response) => {\n commit('updateCustomers', response.data.customers);\n });\n },\n\n autoRecalculate({state, dispatch}) {\n const draft = state.draft;\n draft.order.recalculationMode = 'all';\n return dispatch('recalculateOrder', draft);\n },\n\n recalculateOrder({commit}, draft) {\n commit('updateRecalculateLoading', true);\n\n const data = utils.buildDraftData(draft);\n\n // Recalculate\n return ordersApi\n .recalculate(data)\n .then((response) => {\n commit('updateRecalculateLoading', false);\n\n const draft = response.data;\n commit('updateDraft', draft);\n\n if (response.data.error) {\n throw {response};\n }\n })\n .catch((error) => {\n commit('updateRecalculateLoading', false);\n\n let errorMsg = 'Couldn’t recalculate order.';\n\n const draft = error.response.data;\n commit('updateDraft', draft);\n\n if (error.response.data.error) {\n errorMsg = error.response.data.error;\n throw {response};\n }\n\n throw errorMsg;\n });\n },\n\n sendEmail(context, emailTemplateId) {\n return ordersApi.sendEmail(emailTemplateId);\n },\n\n validateAddress(context, address) {\n return addressesApi\n .validate(address)\n .then((response) => {\n if (response.data) {\n return response.data;\n }\n\n return response;\n })\n .catch((error) => {\n let errorMsg = 'Couldn’t validate address.';\n\n if (error.response.data.error) {\n errorMsg = error.response.data.error;\n }\n\n throw errorMsg;\n });\n },\n\n copyAddressToUser(context, {addressId, userId}) {\n return addressesApi\n .copyAddressToUser(addressId, userId)\n .then((response) => {\n if (response.data) {\n return response.data;\n }\n\n return response;\n })\n .catch((error) => {\n let errorMsg = 'Couldn’t copy address.';\n\n if (error.response.data.message) {\n errorMsg = error.response.data.message;\n }\n\n throw errorMsg;\n });\n },\n\n clearRecentlyAddedLineItems({state}) {\n state.recentlyAddedLineItems = [];\n },\n },\n\n mutations: {\n updateEditing(state, editing) {\n if (!state.unloadEventInit && editing) {\n state.unloadEventInit = true;\n // Add event listener for leaving the page\n window.addEventListener('beforeunload', function (ev) {\n // Only check if we are not saving\n if (\n !state.saveLoading &&\n !_isEqual(state.draft, state.originalDraft)\n ) {\n ev.preventDefault();\n ev.returnValue = '';\n }\n });\n }\n\n state.editing = editing;\n },\n\n updateDraft(state, draft) {\n state.draft = draft;\n },\n\n updateDraftSuppressEmails(state, suppressEmails) {\n state.draft.order.suppressEmails = suppressEmails;\n },\n\n updateDraftOrderMessage(state, message) {\n state.draft.order.message = message;\n },\n\n updateOriginalDraft(state, originalDraft) {\n state.originalDraft = originalDraft;\n },\n\n updateCustomers(state, customers) {\n state.customers = customers;\n },\n\n updateRecalculateLoading(state, recalculateLoading) {\n state.recalculateLoading = recalculateLoading;\n },\n\n updateSaveLoading(state, saveLoading) {\n state.saveLoading = saveLoading;\n },\n\n updateOrderData(state, orderData) {\n state.orderData = orderData;\n },\n\n updateRecentlyAddedLineItems(state, lineItemIdentifier) {\n state.recentlyAddedLineItems.push(lineItemIdentifier);\n },\n\n updateShippingMethodOptions(state, shippingMethodOptions) {\n state.shippingMethodOptions = shippingMethodOptions;\n },\n },\n});\n","/* jshint esversion: 6, strict: false */\n/* globals Craft */\n\nimport axios from 'axios/index';\n\nexport default {\n validate(address) {\n const data = {\n address: address,\n };\n return axios.post(\n Craft.getActionUrl('commerce/orders/validate-address'),\n data,\n {\n headers: {\n 'X-CSRF-Token': Craft.csrfTokenValue,\n },\n }\n );\n },\n\n copyAddressToUser(addressId, userId) {\n const data = {addressId: addressId, userId: userId};\n\n return Craft.sendActionRequest(\n 'POST',\n 'commerce/orders/copy-address-to-user',\n {data}\n );\n },\n};\n","import { render, staticRenderFns } from \"./OrderBlock.vue?vue&type=template&id=05a503be\"\nvar script = {}\nimport style0 from \"./OrderBlock.vue?vue&type=style&index=0&id=05a503be&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"order-block py\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OrderTitle.vue?vue&type=template&id=772b8bf0\"\nvar script = {}\nimport style0 from \"./OrderTitle.vue?vue&type=style&index=0&id=772b8bf0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h3',{staticClass:\"order-title\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./QtyInput.vue?vue&type=template&id=46cd39af\"\nimport script from \"./QtyInput.vue?vue&type=script&lang=js\"\nexport * from \"./QtyInput.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.43_css-loader@6.11.0_webpack@5.111.1__lodash@4_6cc5e3aca35faabbb24bb5de87b710b6/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.rowData.isAvailable)?_c('field',{scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.rowData.qty),expression:\"rowData.qty\"}],staticClass:\"text\",attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"3\",\"placeholder\":\"0\"},domProps:{\"value\":(_vm.rowData.qty)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.rowData, \"qty\", $event.target.value)}}})]}}],null,false,3158077025)}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* jshint esversion: 6, strict: false */\n/* globals Craft, process */\nimport Vue from 'vue';\nimport App from './apps/OrderDetails';\nimport 'prismjs/themes/prism.css';\nimport OrderMeta from './apps/OrderMeta';\nimport OrderNotices from './apps/OrderNotices';\nimport OrderActions from './apps/OrderActions';\nimport OrderCustomer from './apps/OrderCustomer';\nimport OrderErrors from './apps/OrderErrors';\nimport OrderSecondaryActions from './apps/OrderSecondaryActions';\nimport store from './store';\nimport {t} from '../base/filters/craft';\nimport BtnLink from '../base/components/BtnLink';\nimport OrderBlock from './components/OrderBlock';\nimport OrderTitle from './components/OrderTitle';\nimport QtyInput from './components/details/QtyInput';\n\nVue.config.productionTip = false;\nif (process.env.NODE_ENV === 'development') {\n Vue.config.devtools = true;\n}\nVue.filter('t', t);\nVue.component('btn-link', BtnLink);\nVue.component('order-block', OrderBlock);\nVue.component('order-title', OrderTitle);\nVue.component('qty-input', QtyInput);\n\n// Order actions\n// =========================================================================\n\nwindow.OrderActionsApp = new Vue({\n render: (h) => h(OrderActions),\n store,\n}).$mount('#order-actions-app');\n\n// Order errors\n// =========================================================================\nwindow.OrderErrorsApp = new Vue({\n render: (h) => h(OrderErrors),\n store,\n}).$mount('#order-errors-app');\n\n// Order customer\n// =========================================================================\nwindow.OrderCustomerApp = new Vue({\n render: (h) => h(OrderCustomer),\n store,\n}).$mount('#order-customer-app');\n\n// Order details\n// =========================================================================\n\nwindow.OrderDetailsApp = new Vue({\n render: (h) => h(App),\n store,\n\n methods: {\n externalRefresh() {\n const draft = this.$store.state.draft;\n this.$store\n .dispatch('recalculateOrder', draft)\n .then(() => {\n this.$store.dispatch(\n 'displayNotice',\n this.$options.filters.t('Order recalculated.', 'commerce')\n );\n })\n .catch((error) => {\n this.$store.dispatch('displayError', error);\n });\n },\n },\n\n mounted() {\n this.$store.dispatch('getOrder').finally(() => {\n if (!this.$store.getters.hasLineItems) {\n this.$store.dispatch('disableTransactionsTab');\n }\n });\n\n this.$store.watch(\n (state, getters) => getters.hasOrderChanged,\n (newVal, oldVal) => {\n if (newVal) {\n this.$store.dispatch('disableTransactionsTab');\n }\n }\n );\n },\n}).$mount('#order-details-app');\n\n// Order meta\n// =========================================================================\n\nwindow.OrderMetaApp = new Vue({\n render: (h) => h(OrderMeta),\n store,\n}).$mount('#order-meta-app');\n\n// Order meta\n// =========================================================================\n\nwindow.OrderNotices = new Vue({\n render: (h) => h(OrderNotices),\n store,\n}).$mount('#order-notices-app');\n\n// Order secondary actions\n// =========================================================================\n\nwindow.OrderSecondaryActionsApp = new Vue({\n render: (h) => h(OrderSecondaryActions),\n store,\n}).$mount('#order-secondary-actions-app');\n","/* global Craft */\n\nexport function t(message, category, params) {\n return Craft.t(category, message, params);\n}\n"],"names":["module","exports","__webpack_require__","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","platform","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","withXSRFToken","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","isFunction","xsrfValue","xsrfHeaderName","xsrfCookieName","read","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","protocol","protocols","ERR_BAD_REQUEST","send","bind","Axios","mergeConfig","defaults","formDataToJSON","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","formToJSON","thing","isHTMLForm","FormData","executor","TypeError","resolvePromise","this","promise","token","then","_listeners","i","length","onfulfilled","_resolve","message","reason","throwIfRequested","listener","push","index","splice","source","c","call","ERR_CANCELED","name","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","interceptors","configOrUrl","undefined","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","encode","function","serialize","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","code","Error","captureStackTrace","constructor","stack","toJSON","description","number","fileName","lineNumber","columnNumber","descriptors","Object","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","obj","cause","assign","handlers","use","options","eject","id","clear","fn","h","isAbsoluteURL","combineURLs","requestedURL","transformData","normalizeHeaderName","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","target","isPlainObject","isEmptyObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","maxContentLength","maxBodyLength","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","validateStatus","keys","configValue","ERR_BAD_RESPONSE","Math","floor","fns","toURLEncodedForm","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","toString","isFileList","contentType","hasJSONContentType","isObjectPayload","isObject","JSON","stringify","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","formSerializer","_FormData","env","rawValue","isString","parse","trim","e","stringifySafely","JSONRequested","strictJSONParsing","classes","Blob","Accept","r","str","charMap","replace","match","AxiosURLSearchParams","_pairs","append","encoder","_encode","map","pair","join","thisArg","arguments","hashmarkIndex","serializedParams","serializeFn","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","RegExp","decodeURIComponent","remove","now","formData","buildPath","isNumericKey","Number","isFinite","isLast","hasOwnProperty","arr","len","arrayToObject","entries","forEachEntry","matchAll","parsePropPath","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","exec","callback","envFormData","isVisitable","removeBrackets","endsWith","renderKey","dots","predicates","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Symbol","toStringTag","iterator","convertValue","isDate","toISOString","isTypedArray","Buffer","some","isFlatArray","toArray","el","exposedHelpers","build","pop","URLSearchParams","helpers","isNode","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","isBrowser","cache","kindOf","kindOfTest","getPrototypeOf","l","TypedArray","_hasOwnProperty","Uint8Array","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","b","stripBOM","content","charCodeAt","superConstructor","props","sourceObj","destObj","filter","propFilter","merged","getOwnPropertyNames","searchString","position","String","lastIndex","next","regExp","matches","self","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","g","freeSelf","root","Function","objectToString","nativeMax","max","nativeMin","min","toNumber","isObjectLike","isSymbol","other","valueOf","isBinary","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","flush","HASH_UNDEFINED","INFINITY","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","reIsUint","typedArrayTags","freeExports","nodeType","freeModule","freeProcess","nodeUtil","binding","nodeIsTypedArray","arraySome","array","predicate","isHostObject","mapToArray","size","setToArray","set","uid","transform","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","reIsNative","propertyIsEnumerable","nativeKeys","arg","DataView","getNative","Map","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","Hash","entry","ListCache","MapCache","SetCache","values","__data__","add","Stack","assocIndexOf","eq","baseGet","object","isKey","castPath","toKey","baseHasIn","baseIsEqual","customizer","bitmask","equalFunc","objIsArr","othIsArr","objTag","othTag","getTag","objIsObj","othIsObj","isSameTag","equalArrays","tag","byteLength","byteOffset","convert","isPartial","stacked","get","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIteratee","identity","srcValue","isStrictComparable","matchesStrictComparable","hasFunc","isLength","isIndex","isArguments","hasPath","hasIn","UNORDERED_COMPARE_FLAG","baseMatchesProperty","matchData","getMatchData","baseIsMatch","basePropertyDeep","stringToPath","arrLength","othLength","seen","arrValue","othIndex","has","getMapData","getValue","isMasked","baseIsNative","string","pairs","LARGE_ARRAY_SIZE","Ctor","ctorString","memoize","baseToString","quote","findIndexFunc","find","fromIndex","remainder","baseFindIndex","collection","iterable","isArrayLike","iteratee","resolver","memoized","Cache","isArrayLikeObject","baseUnary","inherited","n","baseTimes","skipIndexes","arrayLikeKeys","baseKeys","moduleExports","nativeObjectToString","symToStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","baseGetTag","isOwn","unmasked","getRawTag","baseIsArguments","getAllKeys","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","resIndex","arrayFilter","symbol","isArr","isArg","isBuff","isType","__WEBPACK_AMD_DEFINE_RESULT__","FUNC_ERROR_TEXT","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","NAN","MAX_ARRAY_LENGTH","wrapFlags","genTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEsTemplate","reFlags","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","cloneableTags","stringEscapes","freeParseFloat","parseFloat","require","types","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","arrayAggregator","setter","accumulator","arrayEach","arrayEachRight","arrayEvery","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayReduce","initAccum","arrayReduceRight","asciiSize","baseProperty","baseFindKey","eachFunc","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","current","baseTrim","trimmedEndIndex","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","overArg","replaceHolders","placeholder","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","_","runInContext","pick","idCounter","objectCtorString","oldDash","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","ceil","nativeFloor","nativeIsFinite","nativeJoin","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","metaMap","realNames","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","baseAggregator","baseEach","baseAssign","copyObject","configurable","enumerable","writable","baseAt","paths","skip","lower","upper","baseClone","isDeep","isFlat","isFull","input","initCloneArray","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","copySymbols","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","subValue","getAllKeysIn","baseConformsTo","baseDelay","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","escape","evaluate","interpolate","variable","imports","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGt","baseHas","baseIntersection","arrays","caches","maxLength","Infinity","baseInvoke","parent","last","objStacked","othStacked","noCustomizer","COMPARE_PARTIAL_FLAG","baseMatches","property","isPrototype","baseLt","baseMap","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","sort","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSortBy","basePickBy","baseSet","basePullAll","basePullAt","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","castSlice","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","createCaseFirst","methodName","createCompounder","words","deburr","createCtor","thisBinding","createFind","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","flatten","otherFunc","stubArray","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","subString","clone","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","WRAP_BIND_FLAG","debounce","timeWaiting","defer","delay","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","lt","lte","iteratorToArray","toLength","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","nativeKeysIn","isProto","baseKeysIn","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","importsKeys","importsValues","isEscaping","isEvaluating","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","substring","global","newEnd","uniqueId","prefix","each","eachRight","first","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","modules","installedModules","__nested_webpack_require_187__","moduleId","m","d","getter","o","t","mode","__esModule","ns","p","s","__nested_webpack_require_3886__","__nested_webpack_require_4015__","anObject","that","ignoreCase","multiline","unicode","sticky","__nested_webpack_require_4474__","it","__nested_webpack_require_4716__","is","__nested_webpack_require_5100__","__nested_webpack_require_5410__","hide","redefine","fails","defined","wks","KEY","SYMBOL","strfn","rxfn","O","__nested_webpack_require_6470__","__nested_webpack_require_6854__","toIObject","toAbsoluteIndex","IS_INCLUDES","$this","__nested_webpack_require_7865__","arrayIndexOf","names","__nested_webpack_require_8501__","SPLIT","$split","_split","$push","$SPLIT","LENGTH","LAST_INDEX","NPCG","separator2","lastLength","output","flags","lastLastIndex","splitLimit","separatorCopy","__nested_webpack_require_11989__","SRC","TO_STRING","$toString","TPL","inspectSource","safe","__nested_webpack_require_13155__","store","USE_SYMBOL","__nested_webpack_require_13877__","S","__nested_webpack_require_14620__","$export","INCLUDES","P","F","__nested_webpack_require_15188__","dP","createDesc","f","__nested_webpack_require_15564__","__nested_webpack_require_15863__","IE8_DOM_DEFINE","toPrimitive","Attributes","__nested_webpack_require_16553__","getTime","bitmap","__nested_webpack_require_17564__","MATCH","$match","__nested_webpack_require_18036__","re","__nested_webpack_require_18381__","core","SHARED","copyright","__nested_webpack_require_18914__","ctx","PROTOTYPE","own","out","exp","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","B","expProto","U","W","R","__nested_webpack_require_20639__","shared","__nested_webpack_require_20899__","cof","__nested_webpack_require_21282__","$includes","__nested_webpack_require_21747__","IObject","__nested_webpack_require_22243__","__nested_webpack_require_22986__","__nested_webpack_require_23299__","$flags","DESCRIPTORS","define","__nested_webpack_require_24577__","Iterator","node","peeked","closingTag","_revisit","_selects","_rejects","higher","traverse","child","expr","peek","compile","closing","revisit","parentNode","selects","rejects","reset","opening","atOpening","atClosing","prev","select","exprs","peak","abs","matchHtmlRegExp","html","__nested_webpack_require_32047__","$keys","enumBugKeys","__g","__nested_webpack_require_32778__","__nested_webpack_require_33311__","px","__nested_webpack_require_34013__","__nested_webpack_require_34289__","__e","__nested_webpack_require_34642__","__nested_webpack_require_35613__","__nested_webpack_require_35996__","__nested_webpack_require_36372__","regexCache","charSets","default","extras","regex","toRegex","__nested_webpack_require_38253__","aFunction","__nested_webpack_require_38860__","UNSCOPABLES","ArrayProto","__nested_webpack_require_39260__","__nested_webpack_require_39562__","a47f","__nested_webpack_require_39838__","a481","__nested_webpack_require_40134__","REPLACE","$replace","searchValue","replaceValue","a5ab","__nested_webpack_require_40716__","a7d3","a812","aae3","__nested_webpack_require_41427__","ad9a","globals","ret","unique","prefixed","aef6","__nested_webpack_require_43367__","ENDS_WITH","$endsWith","endPosition","b16a","__webpack_exports__","__nested_webpack_require_44312__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Editor_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","b457","bc25","__nested_webpack_require_46363__","be13","c366","__nested_webpack_require_47195__","c69a","__nested_webpack_require_48206__","c764","__nested_webpack_require_48502__","ca5a","cb7c","__nested_webpack_require_48900__","cf4f","__nested_webpack_require_49142__","hasOwn","cff3","__nested_webpack_require_49806__","getKeys","isEnum","isEntries","d13f","__nested_webpack_require_50366__","IS_WRAP","C","virtual","d2c8","__nested_webpack_require_52844__","NAME","d3f4","d74e","d782","d8e8","d913","da3c","db0c","__nested_webpack_require_54728__","dc9b","__nested_webpack_require_54857__","$values","e5fa","f2fe","f6fd","currentScript","scripts","getElementsByTagName","res","src","f845","fb15","__nested_webpack_exports__","__nested_webpack_require_57111__","setPublicPath_i","values_default","now_default","escape_html","escape_html_default","lang","langPrism","node_modules_unescape","unescape_default","dom_iterator","dom_iterator_default","makeSelection","selection","getSelection","focus","removeAllRanges","addRange","selection_range","pos","activeElement","rangeCount","getRangeAt","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","setStart","startContainer","startOffset","atStart","commonAncestorContainer","startindex","setSelection","Node","TEXT_NODE","textContent","olen","collapse","getLine","plain","cursorPos","startSlice","lastNewline","indentRe","deindentSpacesRe","FORBIDDEN_KEYS","ctrl","alt","pauseBreak","capsLock","esc","pageUp","pageDown","home","arrowLeft","arrowUp","arrowRight","arrowDown","printScreen","meta","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","numLock","scrollLock","components_Editorvue_type_script_lang_js_","model","event","emitEvents","Boolean","language","lineNumbers","autoStyleLineNumbers","readonly","undoStack","lineNumbersHeight","undoOffset","undoTimestamp","lastPos","codeData","composing","watch","immediate","handler","newVal","_this","$nextTick","setLineNumbersHeight","_this2","styleLineNumbers","rawLang","Prism","languages","highlight","prism","lineNumbersCount","totalLines","updated","$refs","pre","mounted","_this3","recordChange","getPlain","onPaste","preventDefault","currentCursorPos","text","originalEvent","clipboardData","execCommand","newCursorPos","updateContent","$pre","$once","methods","getComputedStyle","height","$editor","$lineNumbers","$el","querySelector","editorStyles","btlr","bblr","style","handleClick","evt","$emit","_innerHTML","innerHTML","_plain","utils_htmlToPlain","timestamp","record","restoreStackState","_this$undoStack","undo","redo","handleKeyDown","keyCode","ignoreTabKey","_selectionRange","deindent","getDeindentLevel","innerText","_cursorPos","indentation","getIndent","metaKey","ctrlKey","altKey","shiftKey","handleKeyUp","keyupCode","which","Editor","scriptExports","render","hook","staticRenderFns","_compiled","functional","_injectStyles","originalRender","existing","beforeCreate","normalizeComponent","_obj","_vm","_h","$createElement","_c","_self","staticClass","attrs","staticStyle","visibility","_v","_l","_s","_e","_g","ref","class","contenteditable","spellCheck","autocapitalize","autocomplete","autocorrect","domProps","on","keydown","keyup","click","$listeners","VueSelect","mixins","autoscroll","typeAheadPointer","maybeAdjustScroll","dropdownMenu","children","getDropdownViewport","getBoundingClientRect","top","bottom","scrollTop","offsetTop","filteredOptions","selectable","typeAheadToLastSelected","selectedValue","typeAheadUp","typeAheadDown","typeAheadSelect","u","loading","mutableLoading","toggleLoading","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","Deselect","xmlns","width","OpenIndicator","inserted","appendToBody","toggle","left","scrollX","pageXOffset","scrollY","pageYOffset","unbindPosition","calculatePosition","body","appendChild","unbind","removeChild","y","getOwnPropertyDescriptor","v","getOwnPropertyDescriptors","components","directives","disabled","clearable","deselectFromDropdown","searchable","multiple","transition","clearSearchOnSelect","closeOnSelect","label","getOptionLabel","getOptionKey","onTab","selectOnTab","isComposing","taggable","tabindex","pushTags","filterable","filterBy","toLocaleLowerCase","createOption","optionList","resetOnOptionsChange","clearSearchOnBlur","noDrop","inputId","selectOnKeyCodes","searchInputQuerySelector","mapKeydown","dropdownShouldOpen","pushedTags","_value","isTrackingValues","propsData","$data","searchEl","$scopedSlots","selectedOptions","scope","searching","attributes","searchPlaceholder","dropdownOpen","events","compositionstart","compositionend","onSearchKeyDown","keypress","onSearchKeyPress","blur","onSearchBlur","onSearchFocus","spinner","noOptions","openIndicator","role","listHeader","listFooter","header","deselect","footer","childComponents","stateClasses","isValueEmpty","optionExists","showClearButton","clearSelection","setInternalValueFromOptions","created","$on","pushTag","findOptionFromReducedValue","isOptionSelected","updateValue","onAfterSelect","optionComparator","toggleDropdown","deselectButtons","clearButton","contains","isOptionDeselectable","closeSearchOptions","maybeDeleteValue","normalizeOptionForSlot","onEscape","mousedown","onMousedown","onMouseUp","_t","refInFor","title","_b","rawName","expression","mouseup","mouseover","stopPropagation","display","ajax","pointer","pointerScroll","locals","listToStyles","parentId","list","styles","newStyles","item","part","css","media","sourceMap","parts","hasDocument","DEBUG","stylesInDom","singletonElement","singletonCounter","isProduction","ssrIdKey","isOldIE","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleElement","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","replacement","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","ssrId","firstChild","__webpack_module_cache__","cachedModule","loaded","__webpack_modules__","cw","mod","definition","globalThis","nmd","Hy","_vval","vval_namespaceFn","_params","params_namespaceFn","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","arr2","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","_typeof","NIL","buildFromKeys","keyFn","getPath","fallback","__isVuelidateAsyncVm","validationGetters","$invalid","proxy","nestedKeys","refProxy","ruleKeys","rule","$dirty","dirty","$anyDirty","$error","$pending","$anyError","_this4","_this5","getRef","$params","_this6","vals","validations","setDirtyRecursive","newState","validationMethods","$touch","$reset","$flattenParams","isNested","childParams","getterNames","_cachedComponent","_cachedVue","validateModel","_getComponent","Vue","VBase","oldVval","patchChildren","vm","beforeDestroy","getModel","lazyModel","getModelKey","hasIter","ValidationRule","lazyParentModel","rootModel","runRule","pushParams","rawOutput","asyncVm","makePendingAsyncVm","rawParams","popParams","$sub","run","_this7","__ob__","arrayDep","dep","depend","_indirectWatcher","Watcher","lazy","_lastModel","teardown","destroyed","Validation","_this8","k","_this9","keyDefs","getterDefs","methodDefs","iterDefs","$iter","$model","_this10","renderNested","renderRule","GroupValidation","EachValidation","tracker","_this11","trackBy","$trackBy","x","getModelLazy","_this12","_this13","def","usedTracks","track","refVals","$v","getComponent","rootVm","super","getVue","validationMixin","_vuelidate","$destroy","_setTarget","withParams","paramsOrClosure","maybeValidator","withParamsClosure","_len","_key","lastTarget","newTarget","addParams","closure","_len2","_key2","_default","common_namespaceFn","_common","valid","req","_withParams","withParams_namespaceFn","parentVm","_email","_required","_interopRequireDefault","alpha_namespaceFn","alphaNum_namespaceFn","numeric_namespaceFn","between_namespaceFn","email_namespaceFn","ipAddress_namespaceFn","macAddress_namespaceFn","maxLength_namespaceFn","minLength_namespaceFn","required_namespaceFn","requiredIf_namespaceFn","requiredUnless_namespaceFn","sameAs_namespaceFn","url_namespaceFn","or_namespaceFn","and_namespaceFn","not_namespaceFn","minValue_namespaceFn","maxValue_namespaceFn","integer_namespaceFn","decimal_namespaceFn","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","hasPropertyDescriptor","_interopRequireWildcard","nibbles","nibbleValid","nibble","numeric","hexValid","hex","equalTo","isUndef","isDef","sameVval","vval","createVm","Vm","createKeyToOldIdx","beginIdx","endIdx","addVvals","vvals","startIdx","removeVvals","ch","patchVval","updateVval","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVval","oldEndVval","newEndIdx","newStartVval","newEndVval","updateChildren","withParamsBrowser_namespaceFn","L","vuelidate","external_Vue_namespaceObject","external_Vuex_namespaceObject","Vuex","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","Field","errors","_uid","inputClass","instructions","required","for","LineItemStatusInput_component","lineItem","editing","mapGetters","lineItemStatusId","lineItemStatus","lineItemStatusesKey","lineItemStatuses","filters","color","onSelectStatus","dataset","Garnish","MenuBtn","onOptionSelect","uiLabel","_f","sel","LineItemStatus","LineItemStatusInput","_obj$1","change","$event","gray","components_Modalvue_type_script_lang_js","autoShow","modalClass","resizable","show","showFooter","modal","isVisible","_initModal","Modal","onHide","onShow","hideModal","showModal","details_LineItemOptionsvue_type_script_lang_js","PrismEditor","errorKeys","errorValues","isWaiting","renderPrism","showPrismEditor","prepOptions","hasErrors","hasDuplicateKeys","dupes","inputType","_isObjectLike","normalizeOptions","onAddOption","onEditOptions","prismEditor","closeModal","onModalHide","onModalShow","onChange","_debounce","updateLineItemOptions","onOptionsChange","onRemoveOption","showForm","jsonValid","row","updateLineItem","LineItemOptions","pt","scopedSlots","_u","slotProps","$set","$$v","hidden","LineItemNotes","note","privateNote","details_Adjustmentvue_type_script_lang_js","adjustment","adjustmentKey","errorPrefix","recalculationMode","showLabels","adjustmentOptions","allowedAdjustmentTypes","localAdjustmentAmount","amount","amountNaN","getTypeName","hasAmountErrors","getErrors","included","isAllowedAdjustmentType","details_Adjustmentsvue_type_script_lang_js","Adjustment","$$selectedVal","selected","adjustmentOption","checked","_i","$$a","$$el","$$c","$$i","amountAsCurrency","adjustments","orderId","Adjustments","LineItemAdjustments","addAdjustment","lineItemId","sourceSnapshot","authorId","currentUserId","updateAdjustment","_ref","removeAdjustment","Lightswitch","lightswitchEl","Craft","initUiElements","$","lightswitch","turnOn","_m","details_LineItemPropertyvue_type_script_lang_js","attribute","handleChange","fieldLabel","LineItemProperty","details_Snapshotvue_type_script_lang_js","showSnapshot","Snapshot","components_SelectInputvue_type_script_lang_js","VSelect","selectClass","searchInputName","preFiltered","clearOnBlur","onSearch","searchText","vSelect","getSearchEvents","onOptionClick","onOptionCreated","SelectInput","selectedOption","details_LineItemvue_type_script_lang_js","lineItemKey","editMode","maskOptions","alias","autoGroup","clearMaskOnLostFocus","digits","digitsOptional","groupSeparator","radixPoint","originalLineItem","priceInput","promotionalPriceInput","mapState","draft","state","recentlyAddedLineItems","sku","shippingCategoryId","shippingCategories","shippingCategoryOption","taxCategoryId","taxCategories","taxCategoryOption","promotionalPrice","price","qty","shippingCategory","shippingCategoryOptions","taxCategoryOptions","taxCategory","highlightLineItem","purchasableId","optionsSignature","mapActions","enableEditMode","edit","applyEdit","cancelEdit","_initSnapshotModal","onHideSnapshotModal","openSnapshotModal","closeSnapshotModal","removeLineItem","updateLineItemStatusId","onPriceChange","onPromotionalPriceChange","initPriceInputs","inputmask","nullable","currencyConfig","decimals","decimalSeparator","details_LineItemsvue_type_script_lang_js","LineItem","hasLineItemErrors","lineItemTypes","Custom","purchasableCpEditUrl","canEdit","totalCommittedStock","fulfilledTotalQuantity","salePriceAsCurrency","priceAsCurrency","promotionalAmountAsCurrency","subtotalAsCurrency","totalAsCurrency","snapshot","lineItems","addLineItem","LineItems","external_axios_namespaceObject","Vuetablevue_type_script_lang_js","fields","loadOnStart","apiUrl","httpMethod","reactiveApiUrl","apiMode","dataTotal","dataManager","dataPath","paginationPath","queryParams","page","perPage","appendParams","httpOptions","httpFetch","initialPage","sortOrder","multiSort","tableHeight","multiSortKey","rowClassCallback","rowClass","detailRowComponent","detailRowTransition","tableClass","loadingClass","ascendingIcon","descendingIcon","ascendingClass","descendingClass","sortableIcon","detailRowClass","handleIcon","tableBodyClass","tableHeaderClass","minRows","silent","noDataTemplate","showSortIcons","eventPrefix","tableFields","tableData","tablePagination","currentPage","selectedTo","visibleDetailRows","lastScrollPosition","scrollBarWidth","scrollVisible","normalizeFields","normalizeSortOrder","isFixedHeader","getScrollBarWidth","fireEvent","loadData","elem","getElementsByClassName","handleScroll","useDetailRow","countVisibleFields","field","visible","countTableData","displayEmptyDataRow","lessThanMinRows","blankRows","isApiMode","isDataMode","inner","widthWithoutScrollbar","offsetWidth","overflow","widthWithScrollbar","horizontal","currentTarget","scrollLeft","setTitle","titleClass","dataClass","sortField","getObjectValue","fixHeader","isSpecialField","titleCase","getTitle","renderTitle","isInCurrentSortGroup","hasSortableIcon","sortIconOpacity","renderIconTag","sortIcon","renderSequence","renderNormalField","hasCallback","callCallback","fieldName","txt","substr","delimiter","notIn","success","loadSuccess","failed","loadFailed","getAppendParams","getAllQueryParams","fetch","catch","callDataManager","external_axios_default","scrollHeight","clientHeight","parentFunctionExists","$parent","callParentFunction","eventName","msg","getSortParam","getDefaultSortParam","direction","extractName","extractArgs","isSortable","currentSortOrderPosition","fieldIsInSortOrderPosition","multiColumnSort","singleColumnSort","clearSortOrder","sortClass","cls","toggleCheckbox","dataItem","isChecked","idColumn","selectId","unselectId","isSelectedRow","rowSelected","checkCheckboxesState","selector","els","querySelectorAll","cb","indeterminate","toggleAllCheckboxes","gotoPreviousPage","gotoNextPage","last_page","gotoPage","isVisibleDetailRow","rowId","showDetailRow","hideDetailRow","toggleDetailRow","showField","hideField","toggleField","renderIcon","makePagination","total","per_page","current_page","next_page_url","prev_page_url","to","onRowClass","onRowChanged","onRowClicked","onRowDoubleClicked","onDetailRowClick","onCellClicked","onCellDoubleClicked","onCellRightClicked","changePage","reload","refresh","resetData","oldVal","components_Vuetablevue_type_script_lang_js","Vuetable","fieldIndex","sortable","itemIndex","dblclick","rowData","rowIndex","rowField","contextmenu","colspan","components_AdminTablePaginationvue_type_script_lang_js","wrapperClass","activeClass","disabledClass","pageClass","linkClass","paginationClass","paginationInfoClass","dropdownClass","icons","onEachSide","totalPage","isOnFirstPage","isOnLastPage","notEnoughPages","windowSize","windowStart","loadPage","isCurrentPage","setPaginationData","VuetablePaginationMixin_render","VuetablePaginationMixin_staticRenderFns","itemLabels","singular","plural","paginationLabel","items","AdminTablePagination","AdminTableDeleteButton","actionUrl","confirmationMessage","failMessage","successMessage","escapeHtml","confirm","confirmDelete","continueDelete","sendActionRequest","cp","displayNotice","displayError","components_AdminTableCheckboxvue_type_script_lang_js","selectAll","checks","AdminTableCheckbox","AdminTableActionButton_component","allowMultiple","enabled","ids","icon","button","buttonDisabled","tokenName","csrfTokenName","tokenValue","csrfTokenValue","param","finally","form","submit","enableButton","isMenuButtonInitialised","enable","disableButton","disable","actionsList","_tmpActionsList","hasMultipleSelected","isMenuButton","menubtn","actList","ind","act","AdminTableActionButton","components_AdminTableDetailRowvue_type_script_lang_js","addDelimiter","listKeys","detail","AdminTableDetailRow","showAsList","AdminTableButton","btnClass","isEnabled","buttonClass","linkHref","AdminTableCopyTextButton","ui","createCopyTextBtn","sortable_esm_defineProperty","sortable_esm_toPrimitive","sortable_esm_toPropertyKey","_extends","sortable_esm_ownKeys","_objectSpread2","sortable_esm_typeof","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","off","msMatchesSelector","webkitMatchesSelector","getParentOrHost","closest","includeCTX","_throttleTimeout","R_SPACE","toggleClass","classList","className","defaultView","currentStyle","matrix","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","tagName","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","elRect","right","innerHeight","innerWidth","containerRect","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","Sortable","ghost","dragged","draggable","lastChild","lastElementChild","previousElementSibling","nodeName","getRelativeScrollOffset","offsetLeft","winScroller","includeSelf","gotSelf","clientWidth","scrollWidth","elemCSS","overflowX","overflowY","isRectEqual","rect1","rect2","ms","scrollBy","Polymer","jQuery","Zepto","dom","cloneNode","getChildContainingRectFromElement","ghostEl","rect","_rect$left","_rect$top","_rect$right","_rect$bottom","animated","childRect","expando","plugins","initializeByDefault","PluginManager","mount","plugin","pluginName","pluginEvent","eventCanceled","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_excluded","_objectWithoutPropertiesLoose","_objectWithoutProperties","dragEl","parentEl","rootEl","nextEl","lastDownEl","cloneEl","cloneHidden","dragStarted","moved","putSortable","activeSortable","active","oldIndex","oldDraggableIndex","newIndex","newDraggableIndex","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","targetEl","toEl","fromEl","extraEventProperties","onName","CustomEvent","createEvent","initEvent","bubbles","cancelable","pullMode","lastPutMode","allEventProperties","dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","sortable_esm_lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","sameGroup","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","animationCallbackId","animationStates","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","dataTransfer","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","captureAnimationState","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","indexOfObject","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","repaint","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","_nextTick","_cancelNextTick","_getDirection","touch","pointerType","originalTarget","composedPath","inputs","idx","_saveInputCheckedState","isContentEditable","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","_onTouchMove","_onDragStart","empty","_dragStarted","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","removeAttribute","_hideClone","cloneId","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","lastElRect","childContainingRect","_ghostIsLast","changed","firstElRect","_ghostIsFirst","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","save","checkEl","handleEvent","dropEffect","_globalDragOver","order","getAttribute","useAnimation","destroy","dst","nextTick","cancelNextTick","detectDirection","element","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","sortable_esm","Appvue_type_script_lang_js","allowMultipleSelections","beforeDelete","buttons","checkboxes","checkboxStatus","columns","deleteAction","deleteCallback","deleteConfirmationMessage","deleteFailMessage","deleteSuccessMessage","emptyMessage","fullPage","fullPane","minItems","padded","reorderAction","reorderSuccessMessage","reorderFailMessage","tableDataEndpoint","onLoaded","onLoading","onData","onPagination","onSelect","detailRow","dragging","isLoading","searchClearTitle","searchTerm","tableBodySelector","init","tableBody","canReorder","onSort","handleReorder","onStart","startReorder","onEnd","endReorder","vuetable","handleSelectAll","ev","elements","startPosition","addCheck","handleOnSelectCallback","removeCheck","handleSearch","tableLength","disabledCheckboxesCount","handleDetailRow","deselectAll","delete","onLoadSuccess","emitData","onPaginationData","paginationData","pagination","onChangePage","tableId","getActionUrl","canDelete","checkboxCount","customColumns","searchPlaceholderText","showToolbar","tableCss","checkbox","admintable_Appvue_type_script_lang_js","App_component","tablepane","menu","_showDelete","finishloading","AddLineItemvue_type_script_lang_js","AdminTable","selectedPurchasables","currentTableData","purchasableTableColumns","purchasables","formDisabled","canAddLineItem","submitDisabled","$store","endpoint","orderSiteId","customerId","lineItemAdd","purchasable","isAvailable","Purchasable","newLineItemUid","newLineItemOptionsSignature","lut","_crypto$getRandomValu2","crypto","getRandomValues","Int32Array","d0","d1","d2","d3","UUID","newLineItem","defaultShippingCategoryId","defaultTaxCategoryId","isCheckboxEnabled","handleCheckboxSelect","handleTableData","deep","selectedPurchasableIds","addAdminTable","details_AddLineItemvue_type_script_lang_js","AddLineItem","components_BtnLinkvue_type_script_lang_js","BtnLink","apps_OrderDetailsvue_type_script_lang_js","OrderAdjustments","addOrderAdjustment","updateOrderAdjustment","removeOrderAdjustment","isCompleted","Total","totalPriceAsCurrency","recalculateLoading","saveLoading","originalDraft","lineItemsErrors","recalculate","orderAdjustments","purchasableIds","updateLineItems","clearRecentlyAddedLineItems","updateOrderAdjustments","recalculateOrder","dispatch","autoRecalculate","OrderDetails","lineItemError","lineItemsErrorsKey","meta_OrderStatusvue_type_script_lang_js","originalOrderStatusId","suppressEmails","isRecalculating","textareaHasFocus","orderMessage","originalMessage","orderStatus","orderStatusId","orderStatusesKey","orderStatuses","OrderStatus","maxlength","meta_OrderSitevue_type_script_lang_js","originalOrderSiteId","orderSite","orderSites","site","onSelectSite","OrderSite","buildDraftData","draftData","couponCode","shippingMethodHandle","shippingMethodName","shippingAddressId","shippingAddress","billingAddressId","billingAddress","dateOrdered","notices","adminNotices","sourceBillingAddressId","sourceShippingAddressId","timezone","parseInputValue","_lineItem","hasFreeShipping","isPromotable","isShippable","isTaxable","_adjustment","_orderAdjustment","parsedValue","meta_ShippingMethodvue_type_script_lang_js","showSelect","selectedShippingMethod","shippingMethods","noneShippingMethod","getters","currentMethodName","matchesOrder","orderShippingMethodHandle","onEdit","ordersApi","shippingMethodOptions","setShippingMethod","ShippingMethod","saveOrder","dataString","apps_OrderMetavue_type_script_lang_js","DateOrderedInput","date","dateValue","timeValue","onDateChange","onDateInput","dateInput","datepicker","defaultDate","datepickerOptions","timeInput","timepicker","timepickerOptions","couponCodeLocal","couponCodeInvalid","shippingMethod","onCouponCodeFocus","couponCodeInput","onCouponCodeInput","onCouponCodeBlur","submittedCode","markAsCompleted","updateOrder","updateDateOrderedInput","dateTime","originLabel","origin","handleSuppressEmailsChange","OrderMeta","_k","hasCustomer","orderStatusHtml","shortNumber","orderShortNumber","orderNumber","paidStatusHtml","totalPaid","totalPaidAsCurrency","datePaid","dateAuthorized","dateUpdated","lastIp","orderCompletedEmail","email","apps_OrderNoticesvue_type_script_lang_js","regularNotices","showAdminNotices","showNotices","dismissAdminNotice","notice","clearNotices","OrderNotices","actions_OptionShortcutLabelvue_type_script_lang_js","os","shortcutKey","OptionShortcutLabel_component","apps_OrderActionsvue_type_script_lang_js","UpdateOrderBtn","OptionShortcutLabel","ordersIndexUrl","orderEdit","ordersIndexUrlHashed","orderData","redirect","deleteOrder","returnToOrders","loadCartUrl","createCopyTextPrompt","updateMenuBtn","hasAddresses","$tabLinks","$tabLink","initTabs","handleTabs","$selectedTabLink","$selectedTabLinkHash","$newSelectedTabHash","forceEdit","updateOrderBtn","OrderActions","Customervue_type_script_lang_js","customer","showRemove","colors","getBgColor","getDisplayName","useEmail","customerName","fullName","firstName","lastName","friendlyName","initialChar","displayName","avatarClass","cl","photo","removeButtonLabel","customer_Customervue_type_script_lang_js","Customer","photoThumbUrl","cpEditUrl","canEditUsers","customer_AddressSelectvue_type_script_lang_js","addressModel","addresses","isLoadingMore","selectedAddress","isDoneDisabled","canSelectAddress","totalAddresses","isLoadMoreVisible","addressselectmodal","getAddresses","updateSizeAndPosition","loadMore","close","newId","oldId","AddressSelect_component","address","_q","customer_AddressEditvue_type_script_lang_js","AddressSelect","canCopyToUser","copyToAddress","disclosureMenu","disclosureId","emptyMsg","handleEditAddress","slideout","createElementEditor","ownerId","siteId","draftId","instances","$titleField","$content","addClass","attr","handleNewAddress","elementType","locationAddress","countryCode","elementId","addressId","handleSelect","handleCopy","hideDisclosureMenu","handleCopyToUser","handleRemove","AddressEdit","meta_CustomerSelectvue_type_script_lang_js","customerSearchRequest","selectedCustomer","newCustomerEmail","customers","onCreated","$children","user","query","CustomerSelect","apps_OrderCustomervue_type_script_lang_js","customerUpdatedTime","customerUrl","titles","hasBillingAddress","hasShippingAddress","copyAddress","destinationAddress","updateShippingAddress","_copy","updateBillingAddress","copyToUser","copyAddressToUser","userId","errorMsg","updateAddress","removeBillingAddress","removeShippingAddress","sourceAddressKey","updateCustomer","removeCustomer","originalCustomer","OrderCustomer","customerDeleted","hasAnAddress","billingAddressHtml","shippingAddressHtml","isCredentialed","OrderErrors_component","draftErrors","OrderErrors","apps_OrderSecondaryActionsvue_type_script_lang_js","emailLoading","fulfillmentModal","defaultPdfUrl","pdfUrls","handleFulfillment","CpModal","sendEmail","emailTemplateId","emailTemplate","emailTemplates","downloadPdfMenuBtn","sendEmailMenuBtn","OrderSecondaryActions","hasOrderChanged","pdfUrl","hasLineItems","strict","unloadEventInit","autoSetNewCartAddresses","currentUserPermissions","countries","_isEqual","statesByCountryId","maxLineItems","errorKey","userPhotoFallback","disableTransactionsTab","$transactionsTab","$transactionsTabClone","replaceChild","tabManager","tabsDropdownMenu","$menuBtn","transactionsOption","$container","$prevSelectedTab","$selectedTab","$tab","trigger","$selectedLink","$detailsLink","switchToDetailsTab","staticLink","dynamicLink","staticOptions","fieldsOptions","removeClass","getOrder","customerSearch","_ref5","_ref6","_ref7","validateAddress","addressesApi","_ref8","_ref9","mutations","updateEditing","returnValue","updateDraft","updateDraftSuppressEmails","updateDraftOrderMessage","updateOriginalDraft","updateCustomers","updateRecalculateLoading","updateSaveLoading","updateOrderData","updateRecentlyAddedLineItems","lineItemIdentifier","updateShippingMethodOptions","OrderBlock","OrderTitle","QtyInput","productionTip","category","OrderActionsApp","$mount","OrderErrorsApp","OrderCustomerApp","OrderDetailsApp","App","externalRefresh","OrderMetaApp","OrderSecondaryActionsApp"],"sourceRoot":""} \ No newline at end of file diff --git a/src/web/assets/commerceui/dist/manifest.json b/src-yii2/web/assets/commerceui/dist/manifest.json similarity index 100% rename from src/web/assets/commerceui/dist/manifest.json rename to src-yii2/web/assets/commerceui/dist/manifest.json diff --git a/src/web/assets/commerceui/src/js/base/components/BtnLink.vue b/src-yii2/web/assets/commerceui/src/js/base/components/BtnLink.vue similarity index 100% rename from src/web/assets/commerceui/src/js/base/components/BtnLink.vue rename to src-yii2/web/assets/commerceui/src/js/base/components/BtnLink.vue diff --git a/src/web/assets/commerceui/src/js/base/components/Field.vue b/src-yii2/web/assets/commerceui/src/js/base/components/Field.vue similarity index 100% rename from src/web/assets/commerceui/src/js/base/components/Field.vue rename to src-yii2/web/assets/commerceui/src/js/base/components/Field.vue diff --git a/src/web/assets/commerceui/src/js/base/components/Lightswitch.vue b/src-yii2/web/assets/commerceui/src/js/base/components/Lightswitch.vue similarity index 100% rename from src/web/assets/commerceui/src/js/base/components/Lightswitch.vue rename to src-yii2/web/assets/commerceui/src/js/base/components/Lightswitch.vue diff --git a/src/web/assets/commerceui/src/js/base/components/Modal.vue b/src-yii2/web/assets/commerceui/src/js/base/components/Modal.vue similarity index 100% rename from src/web/assets/commerceui/src/js/base/components/Modal.vue rename to src-yii2/web/assets/commerceui/src/js/base/components/Modal.vue diff --git a/src/web/assets/commerceui/src/js/base/components/SelectInput.vue b/src-yii2/web/assets/commerceui/src/js/base/components/SelectInput.vue similarity index 100% rename from src/web/assets/commerceui/src/js/base/components/SelectInput.vue rename to src-yii2/web/assets/commerceui/src/js/base/components/SelectInput.vue diff --git a/src/web/assets/commerceui/src/js/base/filters/craft.js b/src-yii2/web/assets/commerceui/src/js/base/filters/craft.js similarity index 100% rename from src/web/assets/commerceui/src/js/base/filters/craft.js rename to src-yii2/web/assets/commerceui/src/js/base/filters/craft.js diff --git a/src/web/assets/commerceui/src/js/order/api/addresses.js b/src-yii2/web/assets/commerceui/src/js/order/api/addresses.js similarity index 100% rename from src/web/assets/commerceui/src/js/order/api/addresses.js rename to src-yii2/web/assets/commerceui/src/js/order/api/addresses.js diff --git a/src/web/assets/commerceui/src/js/order/api/orders.js b/src-yii2/web/assets/commerceui/src/js/order/api/orders.js similarity index 100% rename from src/web/assets/commerceui/src/js/order/api/orders.js rename to src-yii2/web/assets/commerceui/src/js/order/api/orders.js diff --git a/src/web/assets/commerceui/src/js/order/app.js b/src-yii2/web/assets/commerceui/src/js/order/app.js similarity index 100% rename from src/web/assets/commerceui/src/js/order/app.js rename to src-yii2/web/assets/commerceui/src/js/order/app.js diff --git a/src/web/assets/commerceui/src/js/order/apps/OrderActions.vue b/src-yii2/web/assets/commerceui/src/js/order/apps/OrderActions.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/apps/OrderActions.vue rename to src-yii2/web/assets/commerceui/src/js/order/apps/OrderActions.vue diff --git a/src/web/assets/commerceui/src/js/order/apps/OrderCustomer.vue b/src-yii2/web/assets/commerceui/src/js/order/apps/OrderCustomer.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/apps/OrderCustomer.vue rename to src-yii2/web/assets/commerceui/src/js/order/apps/OrderCustomer.vue diff --git a/src/web/assets/commerceui/src/js/order/apps/OrderDetails.vue b/src-yii2/web/assets/commerceui/src/js/order/apps/OrderDetails.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/apps/OrderDetails.vue rename to src-yii2/web/assets/commerceui/src/js/order/apps/OrderDetails.vue diff --git a/src/web/assets/commerceui/src/js/order/apps/OrderErrors.vue b/src-yii2/web/assets/commerceui/src/js/order/apps/OrderErrors.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/apps/OrderErrors.vue rename to src-yii2/web/assets/commerceui/src/js/order/apps/OrderErrors.vue diff --git a/src/web/assets/commerceui/src/js/order/apps/OrderMeta.vue b/src-yii2/web/assets/commerceui/src/js/order/apps/OrderMeta.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/apps/OrderMeta.vue rename to src-yii2/web/assets/commerceui/src/js/order/apps/OrderMeta.vue diff --git a/src/web/assets/commerceui/src/js/order/apps/OrderNotices.vue b/src-yii2/web/assets/commerceui/src/js/order/apps/OrderNotices.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/apps/OrderNotices.vue rename to src-yii2/web/assets/commerceui/src/js/order/apps/OrderNotices.vue diff --git a/src/web/assets/commerceui/src/js/order/apps/OrderSecondaryActions.vue b/src-yii2/web/assets/commerceui/src/js/order/apps/OrderSecondaryActions.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/apps/OrderSecondaryActions.vue rename to src-yii2/web/assets/commerceui/src/js/order/apps/OrderSecondaryActions.vue diff --git a/src/web/assets/commerceui/src/js/order/components/InputError.vue b/src-yii2/web/assets/commerceui/src/js/order/components/InputError.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/InputError.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/InputError.vue diff --git a/src/web/assets/commerceui/src/js/order/components/OrderBlock.vue b/src-yii2/web/assets/commerceui/src/js/order/components/OrderBlock.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/OrderBlock.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/OrderBlock.vue diff --git a/src/web/assets/commerceui/src/js/order/components/OrderTitle.vue b/src-yii2/web/assets/commerceui/src/js/order/components/OrderTitle.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/OrderTitle.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/OrderTitle.vue diff --git a/src/web/assets/commerceui/src/js/order/components/actions/OptionShortcutLabel.vue b/src-yii2/web/assets/commerceui/src/js/order/components/actions/OptionShortcutLabel.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/actions/OptionShortcutLabel.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/actions/OptionShortcutLabel.vue diff --git a/src/web/assets/commerceui/src/js/order/components/actions/UpdateOrderBtn.vue b/src-yii2/web/assets/commerceui/src/js/order/components/actions/UpdateOrderBtn.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/actions/UpdateOrderBtn.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/actions/UpdateOrderBtn.vue diff --git a/src/web/assets/commerceui/src/js/order/components/customer/AddressEdit.vue b/src-yii2/web/assets/commerceui/src/js/order/components/customer/AddressEdit.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/customer/AddressEdit.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/customer/AddressEdit.vue diff --git a/src/web/assets/commerceui/src/js/order/components/customer/AddressSelect.vue b/src-yii2/web/assets/commerceui/src/js/order/components/customer/AddressSelect.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/customer/AddressSelect.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/customer/AddressSelect.vue diff --git a/src/web/assets/commerceui/src/js/order/components/customer/Customer.vue b/src-yii2/web/assets/commerceui/src/js/order/components/customer/Customer.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/customer/Customer.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/customer/Customer.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/AddLineItem.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/AddLineItem.vue similarity index 98% rename from src/web/assets/commerceui/src/js/order/components/details/AddLineItem.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/AddLineItem.vue index 569d1749b1..074480856b 100644 --- a/src/web/assets/commerceui/src/js/order/components/details/AddLineItem.vue +++ b/src-yii2/web/assets/commerceui/src/js/order/components/details/AddLineItem.vue @@ -282,10 +282,9 @@ for (var i = 0; i < 256; i++) { lut[i] = (i < 16 ? '0' : '') + i.toString(16); } - var d0 = (Math.random() * 0xffffffff) | 0; - var d1 = (Math.random() * 0xffffffff) | 0; - var d2 = (Math.random() * 0xffffffff) | 0; - var d3 = (Math.random() * 0xffffffff) | 0; + var [d0, d1, d2, d3] = crypto.getRandomValues( + new Int32Array(4) + ); const UUID = lut[d0 & 0xff] + lut[(d0 >> 8) & 0xff] + diff --git a/src/web/assets/commerceui/src/js/order/components/details/Adjustment.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/Adjustment.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/Adjustment.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/Adjustment.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/Adjustments.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/Adjustments.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/Adjustments.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/Adjustments.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/LineItem.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/LineItem.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/LineItem.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/LineItem.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/LineItemAdjustments.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemAdjustments.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/LineItemAdjustments.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemAdjustments.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/LineItemNotes.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemNotes.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/LineItemNotes.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemNotes.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/LineItemOptions.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemOptions.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/LineItemOptions.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemOptions.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/LineItemProperty.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemProperty.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/LineItemProperty.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemProperty.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/LineItemStatus.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemStatus.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/LineItemStatus.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemStatus.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/LineItemStatusInput.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemStatusInput.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/LineItemStatusInput.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/LineItemStatusInput.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/LineItems.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/LineItems.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/LineItems.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/LineItems.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/OrderAdjustments.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/OrderAdjustments.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/OrderAdjustments.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/OrderAdjustments.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/QtyInput.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/QtyInput.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/QtyInput.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/QtyInput.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/Snapshot.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/Snapshot.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/Snapshot.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/Snapshot.vue diff --git a/src/web/assets/commerceui/src/js/order/components/details/Total.vue b/src-yii2/web/assets/commerceui/src/js/order/components/details/Total.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/details/Total.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/details/Total.vue diff --git a/src/web/assets/commerceui/src/js/order/components/meta/CustomerSelect.vue b/src-yii2/web/assets/commerceui/src/js/order/components/meta/CustomerSelect.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/meta/CustomerSelect.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/meta/CustomerSelect.vue diff --git a/src/web/assets/commerceui/src/js/order/components/meta/DateOrderedInput.vue b/src-yii2/web/assets/commerceui/src/js/order/components/meta/DateOrderedInput.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/meta/DateOrderedInput.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/meta/DateOrderedInput.vue diff --git a/src/web/assets/commerceui/src/js/order/components/meta/OpenIndicator.vue b/src-yii2/web/assets/commerceui/src/js/order/components/meta/OpenIndicator.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/meta/OpenIndicator.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/meta/OpenIndicator.vue diff --git a/src/web/assets/commerceui/src/js/order/components/meta/OrderSite.vue b/src-yii2/web/assets/commerceui/src/js/order/components/meta/OrderSite.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/meta/OrderSite.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/meta/OrderSite.vue diff --git a/src/web/assets/commerceui/src/js/order/components/meta/OrderStatus.vue b/src-yii2/web/assets/commerceui/src/js/order/components/meta/OrderStatus.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/meta/OrderStatus.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/meta/OrderStatus.vue diff --git a/src/web/assets/commerceui/src/js/order/components/meta/ShippingMethod.vue b/src-yii2/web/assets/commerceui/src/js/order/components/meta/ShippingMethod.vue similarity index 100% rename from src/web/assets/commerceui/src/js/order/components/meta/ShippingMethod.vue rename to src-yii2/web/assets/commerceui/src/js/order/components/meta/ShippingMethod.vue diff --git a/src/web/assets/commerceui/src/js/order/helpers/utils.js b/src-yii2/web/assets/commerceui/src/js/order/helpers/utils.js similarity index 100% rename from src/web/assets/commerceui/src/js/order/helpers/utils.js rename to src-yii2/web/assets/commerceui/src/js/order/helpers/utils.js diff --git a/src/web/assets/commerceui/src/js/order/mixins/index.js b/src-yii2/web/assets/commerceui/src/js/order/mixins/index.js similarity index 100% rename from src/web/assets/commerceui/src/js/order/mixins/index.js rename to src-yii2/web/assets/commerceui/src/js/order/mixins/index.js diff --git a/src/web/assets/commerceui/src/js/order/store/index.js b/src-yii2/web/assets/commerceui/src/js/order/store/index.js similarity index 100% rename from src/web/assets/commerceui/src/js/order/store/index.js rename to src-yii2/web/assets/commerceui/src/js/order/store/index.js diff --git a/src/web/assets/commerceui/src/sass/base/_common.scss b/src-yii2/web/assets/commerceui/src/sass/base/_common.scss similarity index 100% rename from src/web/assets/commerceui/src/sass/base/_common.scss rename to src-yii2/web/assets/commerceui/src/sass/base/_common.scss diff --git a/src/web/assets/commerceui/src/sass/base/_craft-classes.scss b/src-yii2/web/assets/commerceui/src/sass/base/_craft-classes.scss similarity index 100% rename from src/web/assets/commerceui/src/sass/base/_craft-classes.scss rename to src-yii2/web/assets/commerceui/src/sass/base/_craft-classes.scss diff --git a/src/web/assets/commerceui/src/sass/base/_vue-select.scss b/src-yii2/web/assets/commerceui/src/sass/base/_vue-select.scss similarity index 100% rename from src/web/assets/commerceui/src/sass/base/_vue-select.scss rename to src-yii2/web/assets/commerceui/src/sass/base/_vue-select.scss diff --git a/src/web/assets/commerceui/src/sass/order/_modal.scss b/src-yii2/web/assets/commerceui/src/sass/order/_modal.scss similarity index 100% rename from src/web/assets/commerceui/src/sass/order/_modal.scss rename to src-yii2/web/assets/commerceui/src/sass/order/_modal.scss diff --git a/src/web/assets/commerceui/src/sass/order/app.scss b/src-yii2/web/assets/commerceui/src/sass/order/app.scss similarity index 100% rename from src/web/assets/commerceui/src/sass/order/app.scss rename to src-yii2/web/assets/commerceui/src/sass/order/app.scss diff --git a/src/web/assets/commerceui/webpack.config.js b/src-yii2/web/assets/commerceui/webpack.config.js similarity index 100% rename from src/web/assets/commerceui/webpack.config.js rename to src-yii2/web/assets/commerceui/webpack.config.js diff --git a/src/web/assets/commercewidgets/CommerceWidgetsAsset.php b/src-yii2/web/assets/commercewidgets/CommerceWidgetsAsset.php similarity index 94% rename from src/web/assets/commercewidgets/CommerceWidgetsAsset.php rename to src-yii2/web/assets/commercewidgets/CommerceWidgetsAsset.php index db6c932019..b96cdc5e90 100644 --- a/src/web/assets/commercewidgets/CommerceWidgetsAsset.php +++ b/src-yii2/web/assets/commercewidgets/CommerceWidgetsAsset.php @@ -17,9 +17,6 @@ */ class CommerceWidgetsAsset extends AssetBundle { - /** - * @inheritdoc - */ public function init(): void { $this->sourcePath = __DIR__ . '/dist'; diff --git a/src-yii2/web/assets/commercewidgets/dist/CommerceWidgets.js b/src-yii2/web/assets/commercewidgets/dist/CommerceWidgets.js new file mode 100644 index 0000000000..6f3f5a04b4 --- /dev/null +++ b/src-yii2/web/assets/commercewidgets/dist/CommerceWidgets.js @@ -0,0 +1,2 @@ +(()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}"undefined"===e(Craft.Commerce)&&(Craft.Commerce={}),Craft.Commerce.createDateRangePicker=function(e){var t=!1,r=e.onChange||$.noop;e=$.extend({},e,{onChange:function(e,o,a){t&&r(e,o,a)}});var o=Craft.ui.createDateRangePicker(e);return t=!0,o},Craft.Commerce.CommerceWidgets={updateOrderStatuses:function(e,t){var r=$("#".concat(t,' [data-attribute="orderStatuses"] .selectize select'));if(r){var o=r[0].selectize;Craft.sendActionRequest("get","commerce/order-statuses/get-order-statuses",{params:{storeId:e}}).then(function(e){e.data.orderStatuses,o.clear(!0),o.clearOptions(!0),e.data.orderStatuses.forEach(function(e){o.addOption({text:e.name,value:e.uid,status:e.color})}),o.refreshOptions(!1)}).catch(function(e){Craft.cp.displayError(e)})}else Craft.cp.displayError("Could not find order status field.")}}})(); +//# sourceMappingURL=CommerceWidgets.js.map \ No newline at end of file diff --git a/src-yii2/web/assets/commercewidgets/dist/CommerceWidgets.js.map b/src-yii2/web/assets/commercewidgets/dist/CommerceWidgets.js.map new file mode 100644 index 0000000000..4b84f218e2 --- /dev/null +++ b/src-yii2/web/assets/commercewidgets/dist/CommerceWidgets.js.map @@ -0,0 +1 @@ +{"version":3,"file":"CommerceWidgets.js","mappings":"4OAG8C,cAA1CA,EAAOC,MAAMC,YACfD,MAAMC,SAAW,CAAC,GAKpBD,MAAMC,SAASC,sBAAwB,SAAUC,GAC/C,IAAIC,GAAc,EACdC,EAAeF,EAAOG,UAAYC,EAAEC,KAExCL,EAASI,EAAEE,OAAO,CAAC,EAAGN,EAAQ,CAC5BG,SAAU,SAAUI,EAAOC,EAAKC,GACzBR,GAGLC,EAAaK,EAAOC,EAAKC,EAC3B,IAGF,IAAIC,EAAOb,MAAMc,GAAGZ,sBAAsBC,GAE1C,OADAC,GAAc,EACPS,CACT,EAGAb,MAAMC,SAASc,gBAAkB,CAC/BC,oBAAqB,SAAUC,EAASC,GACtC,IAAMC,EAAoBZ,EAAC,IAAAa,OACrBF,EAAW,wDAGjB,GAAKC,EAAL,CAKA,IAAME,EAAYF,EAAkB,GAAGE,UAGvCrB,MAAMsB,kBACJ,MACA,6CACA,CAACC,OAAQ,CAACN,QAAAA,KAETO,KAAK,SAACC,GACiBA,EAASC,KAAKC,cACpCN,EAAUO,OAAM,GAChBP,EAAUQ,cAAa,GAEvBJ,EAASC,KAAKC,cAAcG,QAAQ,SAACC,GACnCV,EAAUW,UAAU,CAClBC,KAAMF,EAAYG,KAClBC,MAAOJ,EAAYK,IACnBC,OAAQN,EAAYO,OAExB,GAEAjB,EAAUkB,gBAAe,EAC3B,GAAE,MACK,SAACC,GACNxC,MAAMyC,GAAGC,aAAaF,EACxB,EA3BF,MAFExC,MAAMyC,GAAGC,aAAa,qCA8B1B,E","sources":["webpack:///./CommerceWidgets.js"],"sourcesContent":["/* jshint esversion: 6 */\n/* globals Craft, Garnish, $, htmx */\n\nif (typeof Craft.Commerce === typeof undefined) {\n Craft.Commerce = {};\n}\n\n// Wraps Craft.ui.createDateRangePicker, suppressing onChange during initialization\n// so that restoring a saved custom date range does not overwrite the stored values.\nCraft.Commerce.createDateRangePicker = function (config) {\n var initialized = false;\n var userOnChange = config.onChange || $.noop;\n\n config = $.extend({}, config, {\n onChange: function (start, end, handle) {\n if (!initialized) {\n return;\n }\n userOnChange(start, end, handle);\n },\n });\n\n var $btn = Craft.ui.createDateRangePicker(config);\n initialized = true;\n return $btn;\n};\n\n// Instantiate the CommerceWidgets as a global object\nCraft.Commerce.CommerceWidgets = {\n updateOrderStatuses: function (storeId, selectizeId) {\n const $selectizeElement = $(\n `#${selectizeId} [data-attribute=\"orderStatuses\"] .selectize select`\n );\n\n if (!$selectizeElement) {\n Craft.cp.displayError('Could not find order status field.');\n return;\n }\n\n const selectize = $selectizeElement[0].selectize;\n\n // Retrieve the order statuses for the store\n Craft.sendActionRequest(\n 'get',\n 'commerce/order-statuses/get-order-statuses',\n {params: {storeId}}\n )\n .then((response) => {\n const orderStatuses = response.data.orderStatuses;\n selectize.clear(true);\n selectize.clearOptions(true);\n\n response.data.orderStatuses.forEach((orderStatus) => {\n selectize.addOption({\n text: orderStatus.name,\n value: orderStatus.uid,\n status: orderStatus.color,\n });\n });\n\n selectize.refreshOptions(false);\n })\n .catch((error) => {\n Craft.cp.displayError(error);\n });\n },\n};\n"],"names":["_typeof","Craft","Commerce","createDateRangePicker","config","initialized","userOnChange","onChange","$","noop","extend","start","end","handle","$btn","ui","CommerceWidgets","updateOrderStatuses","storeId","selectizeId","$selectizeElement","concat","selectize","sendActionRequest","params","then","response","data","orderStatuses","clear","clearOptions","forEach","orderStatus","addOption","text","name","value","uid","status","color","refreshOptions","error","cp","displayError"],"sourceRoot":""} \ No newline at end of file diff --git a/src/web/assets/commercewidgets/src/CommerceWidgets.js b/src-yii2/web/assets/commercewidgets/src/CommerceWidgets.js similarity index 100% rename from src/web/assets/commercewidgets/src/CommerceWidgets.js rename to src-yii2/web/assets/commercewidgets/src/CommerceWidgets.js diff --git a/src/web/assets/commercewidgets/webpack.config.js b/src-yii2/web/assets/commercewidgets/webpack.config.js similarity index 100% rename from src/web/assets/commercewidgets/webpack.config.js rename to src-yii2/web/assets/commercewidgets/webpack.config.js diff --git a/src/web/assets/coupons/CouponsAsset.php b/src-yii2/web/assets/coupons/CouponsAsset.php similarity index 94% rename from src/web/assets/coupons/CouponsAsset.php rename to src-yii2/web/assets/coupons/CouponsAsset.php index d89f70cc95..c4453eb806 100644 --- a/src/web/assets/coupons/CouponsAsset.php +++ b/src-yii2/web/assets/coupons/CouponsAsset.php @@ -19,9 +19,6 @@ */ class CouponsAsset extends AssetBundle { - /** - * @inheritdoc - */ public function init(): void { $this->sourcePath = __DIR__ . '/dist'; @@ -37,9 +34,6 @@ public function init(): void parent::init(); } - /** - * @inheritdoc - */ public function registerAssetFiles($view): void { parent::registerAssetFiles($view); diff --git a/src-yii2/web/assets/coupons/dist/coupons.js b/src-yii2/web/assets/coupons/dist/coupons.js new file mode 100644 index 0000000000..4f56768a98 --- /dev/null +++ b/src-yii2/web/assets/coupons/dist/coupons.js @@ -0,0 +1,2 @@ +(()=>{var e={594(){},761(e,t,n){var a=n(594);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[e.id,a,""]]),a.locals&&(e.exports=a.locals),(0,n(824).A)("709f09c4",a,!0,{})},824(e,t,n){"use strict";function a(e,t){for(var n=[],a={},o=0;of});var o="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!o)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var r={},s=o&&(document.head||document.getElementsByTagName("head")[0]),i=null,d=0,u=!1,l=function(){},c=null,p="data-vue-ssr-id",h="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function f(e,t,n,o){u=n,c=o||{};var s=a(e,t);return m(s),function(t){for(var n=[],o=0;on.parts.length&&(a.parts.length=n.parts.length)}else{var s=[];for(o=0;o{const t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}n(761),"undefined"===e(Craft.Commerce)&&(Craft.Commerce={}),Craft.Commerce.Coupons=Garnish.Base.extend({couponsTable:null,couponFormat:null,hud:null,$couponsContainer:null,$couponFormatField:null,$generateBtn:null,$generateHudBody:null,$hudFormatField:null,$hudCountField:null,$hudSubmitButton:null,init:function(e,t){this.setSettings(t,Craft.Commerce.Coupons.defaults),this.$couponsContainer=$(this.settings.couponsContainerSelector),this.$couponFormatField=this.$couponsContainer.find(this.settings.couponFormatFieldSelector),this.$generateBtn=$(this.settings.generateBtnSelector),this.couponsTable=$("#"+this.settings.couponsTableId),this.eventListeners()},eventListeners:function(){var e=this;arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(this.$couponsContainer.find("button.btn.add").off("click"),this.couponsTable.find("tbody button.delete").off("click")),this.addListener(this.$generateBtn,"click","showGenerateHud"),this.$couponsContainer.find("button.add").on("click",function(t){t.preventDefault();var n=e.couponsTable.find("tbody tr").length;e.createRow(n,"",null),e.couponsTable.removeClass("hidden"),e.eventListeners(!0)}),this.couponsTable.find("tbody button.delete").on("click",function(t){t.preventDefault(),$(t.currentTarget).closest("tr").remove(),e.couponsTable.find("tbody tr").length||e.couponsTable.addClass("hidden")})},showGenerateHud:function(){if(!this.hud)return this.$generateHudBody=$("
").attr("id","commerce-coupons-hud"),this.$hudCountField=Craft.ui.createTextField({label:Craft.t("commerce","Number of Coupons"),name:"couponCount",type:"number",value:1,max:400}).appendTo(this.$generateHudBody),this.$hudFormatField=Craft.ui.createTextField({label:Craft.t("commerce","Generated Coupon Format"),name:"couponFormat",type:"text",instructions:Craft.t("commerce","The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.",{example:"`summer_####`"}),value:this.settings.couponFormat}),this.$generateHudBody.append(this.$hudFormatField),this.$hudMaxUsesField=Craft.ui.createTextField({label:Craft.t("commerce","Max Uses"),name:"maxUses",type:"number",value:"",max:400}),this.$generateHudBody.append(this.$hudMaxUsesField),this.$hudSubmitButton=Craft.ui.createSubmitButton({spinner:!0}).appendTo(this.$generateHudBody),void(this.hud=new Garnish.HUD(this.$generateBtn,this.$generateHudBody,{hudClass:"hud",onSubmit:$.proxy(this,"generateCoupons")}));this.hud.show()},generateCoupons:function(){var e=this;if(this.$hudSubmitButton.addClass("loading"),Craft.ui.clearErrorsFromField(this.$hudFormatField),-1===this.$hudFormatField.find("input").val().indexOf("#"))return Craft.ui.addErrorsToField(this.$hudFormatField,[Craft.t("commerce","Coupon format is required and must contain at least one `#`.")]),void this.$hudSubmitButton.removeClass("loading");Craft.sendActionRequest("POST","commerce/discounts/generate-coupons",{data:this.getGenerateData()}).then(function(t){e.$couponFormatField.val(e.$hudFormatField.find("input").val());var n=t.data.coupons;n&&e.addCodes(n),e.hud.hide()}).catch(function(t){var n=t.response;n.data.message&&Craft.ui.addErrorsToField(e.$hudFormatField,[n.data.message])}).finally(function(){e.$hudSubmitButton.removeClass("loading")})},addCodes:function(e){var t=this;if(e&&e.length){var n=this.couponsTable.find("tbody tr").length,a=this.hud.$main.find('input[name="maxUses"]').val();e.forEach(function(e){t.createRow(n,e,a),n++}),this.couponsTable.removeClass("hidden"),this.eventListeners(!0)}},createRow:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=$("");a.data("id",e);var o=$("");o.addClass("hidden singleline-cell textual");var r=$(""}}]}},computed:Dn(Dn(Dn({},(0,r.mapState)({purchasables:function(t){return t.purchasables},draft:function(t){return t.draft}})),(0,r.mapGetters)(["canAddLineItem","defaultShippingCategoryId","defaultTaxCategoryId","getErrors","lineItemTypes","orderId"])),{},{formDisabled:function(){return!this.canAddLineItem},submitDisabled:function(){return!this.canAddLineItem||!this.selectedPurchasables.length},lineItems:function(){return this.$store.state.draft.order.lineItems},endpoint:function(){var t="commerce/orders/purchasables-table?siteId="+this.draft.order.orderSiteId;return this.draft.order.customerId&&(t=t+"&customerId="+this.draft.order.customerId),t}}),methods:Dn(Dn({},(0,r.mapActions)(["displayError"])),{},{lineItemAdd:function(){this.canAddLineItem?this.addLineItem():this.displayError(this.$options.filters.t("You are not allowed to add a line item.","commerce"))},addLineItem:function(){var t=[];if(this.selectedPurchasables.length)for(var e=0;e>8&255]+r[o>>16&255]+r[o>>24&255]+"-"+r[255&a]+r[a>>8&255]+"-"+r[a>>16&15|64]+r[a>>24&255]+"-"+r[63&s|128]+r[s>>8&255]+"-"+r[s>>16&255]+r[s>>24&255]+r[255&l]+r[l>>8&255]+r[l>>16&255]+r[l>>24&255],c={adjustments:[],description:Craft.t("commerce","Custom"),id:null,isNew:!0,lineItemStatusId:null,note:"",options:[],orderId:this.orderId,price:0,privateNote:"",promotionalPrice:null,purchasableId:null,qty:1,sku:Math.random().toString(36).substring(2,8),shippingCategoryId:this.defaultShippingCategoryId,type:this.lineItemTypes.Custom,taxCategoryId:this.defaultTaxCategoryId,uid:u};t.push(c)}t.length&&this.$emit("addLineItem",t),this.selectedPurchasables=[],this.showForm=!1},isCheckboxEnabled:function(t){return t.isAvailable},handleCheckboxSelect:function(t){if(t&&t.length){var e=this;this.selectedPurchasables=t.map((function(t){for(var n=0;n=0?this.$refs.addAdminTable.removeCheck(t[r].id):t[r].qty&&i<0&&this.$refs.addAdminTable.addCheck(t[r].id)}}}}},Tn=$n,Ln=(n(7258),s(Tn,(function(){var t=this,e=t._self._c;return e("div",[t.showForm?[e("hr"),t._v(" "),e("div",[e("div",{staticClass:"flex add-line-item-table-header pb"},[e("h2",[t._v("\n "+t._s(t.$options.filters.t("Add a line item","commerce"))+"\n ")]),t._v(" "),e("form",{staticClass:"add-line-item-form",on:{submit:function(e){return e.preventDefault(),t.lineItemAdd()}}},[e("div",{staticClass:"buttons buttons--add-line-item"},[e("input",{staticClass:"btn",class:{disabled:t.formDisabled},attrs:{type:"button",disabled:t.formDisabled,value:t.$options.filters.t("Cancel","commerce")},on:{click:function(e){t.showForm=!1}}}),t._v(" "),e("input",{staticClass:"btn secondary",class:{disabled:t.submitDisabled},attrs:{type:"submit",disabled:t.submitDisabled},domProps:{value:t.$options.filters.t("Add","commerce")},on:{click:function(e){return e.preventDefault(),t.lineItemAdd()}}})])])]),t._v(" "),e("admin-table",{ref:"addAdminTable",attrs:{"allow-multiple-selections":!0,"table-data-endpoint":t.endpoint,checkboxes:!0,"checkbox-status":t.isCheckboxEnabled,columns:t.purchasableTableColumns,padded:!0,"per-page":"10",search:"true"},on:{onSelect:t.handleCheckboxSelect,data:t.handleTableData}}),t._v(" "),e("form",{staticClass:"add-line-item-form",on:{submit:function(e){return e.preventDefault(),t.lineItemAdd()}}},[e("div",{staticClass:"buttons buttons--add-line-item"},[e("input",{staticClass:"btn",class:{disabled:t.formDisabled},attrs:{type:"button",disabled:t.formDisabled,value:t.$options.filters.t("Cancel","commerce")},on:{click:function(e){t.showForm=!1}}}),t._v(" "),e("input",{staticClass:"btn secondary",class:{disabled:t.submitDisabled},attrs:{type:"submit",disabled:t.submitDisabled},domProps:{value:t.$options.filters.t("Add","commerce")},on:{click:function(e){return e.preventDefault(),t.lineItemAdd()}}})])])],1)]:[t.lineItems.length>0?[e("div",{staticClass:"text-left"},[e("div",{staticClass:"flex"},[e("btn-link",{attrs:{"button-class":"btn icon add"},on:{click:function(e){t.showForm=!0}}},[t._v(t._s(t._f("t")("Add a line item","commerce")))]),t._v(" "),e("btn-link",{attrs:{"button-class":"btn icon add"},on:{click:t.addLineItem}},[t._v(t._s(t._f("t")("Add a custom line item","commerce")))])],1)])]:[e("div",{staticClass:"starter"},[e("div",{attrs:{"data-icon":"info"}}),t._v(" "),e("h2",[t._v(t._s(t._f("t")("Your order is empty","commerce")))]),t._v(" "),e("div",{staticClass:"flex"},[e("btn-link",{attrs:{"button-class":"btn icon add"},on:{click:function(e){t.showForm=!0}}},[t._v(t._s(t._f("t")("Add a line item","commerce")))]),t._v(" "),e("btn-link",{attrs:{"button-class":"btn icon add"},on:{click:t.addLineItem}},[t._v(t._s(t._f("t")("Add a custom line item","commerce")))])],1)])]]],2)}),[],!1,null,null,null).exports),Nn={props:{buttonClass:{type:[String,Object],default:"btn-link"}}},Rn=(n(6796),s(Nn,(function(){var t=this;return(0,t._self._c)("button",{staticClass:"btn-link-default",class:t.buttonClass,attrs:{type:"button"},on:{click:function(e){return e.preventDefault(),t.$emit("click")}}},[t._t("default")],2)}),[],!1,null,null,null).exports);function Bn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Fn(t){for(var e=1;e0?e("ul",t._l(t.lineItemsErrors,(function(n,r){return e("li",{key:"lineItemsErrors-"+r,staticClass:"error"},[t._v("\n "+t._s(n)+"\n ")])})),0):t._e(),t._v(" "),t.lineItems.length>0||t.editing?[e("line-items",{attrs:{"line-items":t.lineItems,editing:t.editing,"recalculation-mode":t.recalculationMode},on:{updateLineItems:t.updateLineItems}}),t._v(" "),t.editing?[e("div",{staticClass:"pb",class:{"orderedit-border-color orderedit-border-t pt":0==t.lineItems.length}},[e("add-line-item",{on:{addLineItem:t.addLineItem}})],1)]:t._e(),t._v(" "),t.editing&&t.originalDraft.order.isCompleted||t.recalculateLoading?e("div",{staticClass:"text-right pb"},[t.editing&&t.originalDraft.order.isCompleted?e("div",{staticClass:"recalculate-action"},[e("btn-link",{staticClass:"recalculate-btn error",on:{click:function(e){return t.autoRecalculate()}}},[t._v(t._s(t._f("t")("Recalculate order","commerce")))])],1):t._e(),t._v(" "),t.recalculateLoading?e("div",{staticClass:"spinner"}):t._e()]):t._e(),t._v(" "),t.lineItems.length>0?e("div",{staticClass:"order-total-summary pt"},[t.orderAdjustments.length>0||t.editing?[e("order-adjustments",{attrs:{adjustments:t.orderAdjustments,editing:t.editing,"recalculation-mode":t.recalculationMode},on:{updateOrderAdjustments:t.updateOrderAdjustments}})]:t._e(),t._v(" "),e("div",{staticClass:"order-flex justify-end"},[e("div",{staticClass:"w-3/4 orderedit-border-t orderedit-border-color pt"},[e("total",{attrs:{order:t.draft.order}})],1)])],2):t._e()]:t._e()]:[e("div",{staticClass:"spinner"})]],2)]):t._e()}),[],!1,null,null,null).exports);function Kn(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Jn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Xn(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n0},showNotices:function(){return this.regularNotices.length>0}},methods:{dismissAdminNotice:function(t){var e=this.draft;e.order.adminNotices=this.adminNotices.filter((function(e){return e.id!==t.id})),this.draft=e},clearNotices:function(){var t=this.draft;t.order.notices=[],this.draft=t}}},br=(n(681),s(gr,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"order-notices-wrapper"},[t.showAdminNotices?e("div",{staticClass:"meta read-only order-admin-notices"},[e("div",{staticClass:"order-flex order-notices-header"},[e("div",[t._v("\n "+t._s(t._f("t")("Admin Notices","commerce"))+"\n ")])]),t._v(" "),e("div",{staticClass:"order-notices-items"},t._l(t.adminNotices,(function(n){return e("div",{key:n.id},[e("hr"),t._v(" "),e("div",{staticClass:"order-flex order-notices-item order-admin-notice-item"},[e("div",[t._v(t._s(n.message))]),t._v(" "),t.editing?e("div",[e("button",{staticClass:"btn small",on:{click:function(e){return e.preventDefault(),t.dismissAdminNotice(n)}}},[t._v("\n "+t._s(t._f("t")("Clear","commerce"))+"\n ")])]):t._e()])])})),0)]):t._e(),t._v(" "),t.showNotices?e("div",{staticClass:"meta read-only warning order-customer-notices"},[e("div",{staticClass:"order-flex order-notices-header"},[e("div",[t._v("\n "+t._s(t._f("t")("Customer Notices","commerce"))+"\n ")]),t._v(" "),t.editing?e("div",[e("button",{staticClass:"btn small",on:{click:function(e){return e.preventDefault(),t.clearNotices.apply(null,arguments)}}},[t._v("\n "+t._s(t._f("t")("Clear notices","commerce"))+"\n ")])]):t._e()]),t._v(" "),e("div",{staticClass:"order-notices-items"},t._l(t.regularNotices,(function(n){return e("div",{key:n.id},[e("hr"),t._v(" "),e("div",{staticClass:"order-notices-item"},[t._v("\n "+t._s(n.message)+"\n ")])])})),0)]):t._e()])}),[],!1,null,null,null)),yr=br.exports,_r={props:{os:{type:String},shortcutKey:{type:String},alt:{type:String},shift:{type:String}}},wr=(n(2491),s(_r,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"option-shortcut-label"},["mac"===t.os?[e("span",{staticClass:"shortcut"},[t._v(t._s((t.alt?"⌥":"")+(t.shift?"⇧":"")+"⌘"+t.shortcutKey))])]:[e("span",{staticClass:"shortcut"},[t._v(t._s("Ctrl+"+(t.alt?"Alt+":"")+(t.shift?"Shift+":"")+t.shortcutKey))])]],2)}),[],!1,null,null,null));function Cr(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Or(t){for(var e=1;e0&&void 0!==arguments[0])||arguments[0],e=this.customer.fullName;return e||(e=this.customer.firstName,this.customer.lastName&&(e+=" "+this.customer.lastName)),e||(e=this.customer.friendlyName),!e&&t&&(e=this.customer.email),e||""}},computed:Er(Er({},(0,r.mapGetters)(["canEditUsers"])),{},{initialChar:function(){var t=this.getDisplayName();return t?t.charAt(0).toUpperCase():""},avatarClass:function(){var t={"customer-photo--initial":!this.customer.photo};return this.customer.photo||(t[this.getBgColor(this.initialChar)]=!0),t},removeButtonLabel:function(){return this.$options.filters.t("Remove {label}","app",{label:this.$options.filters.t("Customer","commerce")})}})},$r=Mr,Tr=(n(2992),s($r,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"customer-wrapper"},[t.customer?e("div",{staticClass:"order-flex align-center",class:{"customer-display":t.display}},[e("div",{staticClass:"customer-photo-wrapper"},[e("div",{staticClass:"customer-photo order-flex justify-center align-center",class:t.avatarClass},[t.customer.photo&&t.customer.photoThumbUrl?e("img",{staticClass:"w-full",attrs:{src:t.customer.photoThumbUrl,alt:t.customer.email}}):e("div",{class:t.getBgColor(t.initialChar)},[t._v("\n "+t._s(t.initialChar)+"\n ")])]),t._v(" "),e("span",{staticClass:"status",class:t.customer.status})]),t._v(" "),e("div",{staticClass:"customer-info-container ml-1"},[t.getDisplayName(!1)?e("div",[t._v("\n "+t._s(t.getDisplayName(!1))+"\n ")]):t._e(),t._v(" "),e("div",{staticClass:"w-full light"},[t._v(t._s(t.customer.email))]),t._v(" "),t.display&&t.customer.cpEditUrl&&t.canEditUsers?e("div",{staticClass:"w-full"},[t.customer.cpEditUrl?e("a",{attrs:{href:t.customer.cpEditUrl}},[t._v(t._s(t.$options.filters.t("View customer","commerce")))]):t._e()]):t._e()])]):t._e(),t._v(" "),t.showRemove?e("button",{staticClass:"customer-remove delete icon",attrs:{type:"button",title:t.$options.filters.t("Remove","commerce"),"aria-label":t.removeButtonLabel},on:{click:function(e){return e.preventDefault(),t.$emit("remove")}}}):t._e()])}),[],!1,null,null,null).exports);function Lr(t){return function(t){if(Array.isArray(t))return Nr(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Nr(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Nr(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Nr(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]&&arguments[1];t&&(t.title=this.titles.billingAddress),this.updateAddress("billing",t,!0,e)},updateShippingAddress:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];t&&(t.title=this.titles.shippingAddress),this.updateAddress("shipping",t,!0,e)},removeBillingAddress:function(){this.updateAddress("billing",null,!0,!1)},removeShippingAddress:function(){this.updateAddress("shipping",null,!0,!1)},updateAddress:function(t,e){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=this.draft,o=t+"Address",a="source"+o.charAt(0).toUpperCase()+o.slice(1)+"Id";i.order[o]=e,!e||r?i.order[a]=null:r||e.ownerId==i.order.id||(i.order[a]=e.id),this.$store.commit("updateDraft",i),n&&this.hasCustomer&&this.recalculate()},updateCustomer:function(t){if(t){var e=JSON.parse(JSON.stringify(this.draft));e.order.customerId=t.id,this.customer=t,this.photo=t.photo,this.draft=e,this.recalculate()}},removeCustomer:function(){if(confirm(this.$options.filters.t("Are you sure you want to remove this customer?","commerce"))){var t=this.draft;t.order.customerId=null,t.order.email=null,this.photo=null,t.order.isCompleted||(t.order.billingAddressId=null,t.order.billingAddress=null,t.order.shippingAddressId=null,t.order.shippingAddress=null),this.draft=t}},recalculate:function(){var t=this;this.recalculateOrder(this.draft).then((function(){t.$store.dispatch("displayNotice",t.$options.filters.t("Order recalculated.","commerce"))})).catch((function(e){t.$store.dispatch("displayError",e)}))}}),mounted:function(){this.draft&&(this.customerId=this.draft.order.customerId),this.hasCustomer||(this.editMode=!0),this.originalCustomer&&(this.customer=this.originalCustomer)},updated:function(){if(this.draft&&this.customerId!=this.draft.order.customerId){this.customerId=this.draft.order.customerId;var t=new Date;this.customerUpdatedTime=t.getTime()}}},ai=oi,si=(n(8710),s(ai,(function(){var t=this,e=t._self._c;return t.draft?e("div",{class:{"order-opacity-50":t.recalculateLoading||t.saveLoading}},[e("div",[e("div",{staticClass:"order-flex justify-between align-center pb"},[e("h3",{staticClass:"m-0"},[t._v("\n "+t._s(t.$options.filters.t("Customer","commerce"))+"\n ")]),t._v(" "),!t.hasCustomer||!t.canEdit||t.editing&&t.editMode?t._e():[e("btn-link",{on:{click:function(e){return t.enableEditMode()}}},[t._v(t._s(t.$options.filters.t("Edit","commerce")))])]],2),t._v(" "),e("div",{staticClass:"customer-select-wrapper",class:{"customer-select-wrapper--selecting":!t.hasCustomer}},[t.hasCustomer?e("customer",{attrs:{customer:t.customer,display:!0,"show-remove":t.editing&&t.editMode},on:{remove:t.removeCustomer}}):t._e(),t._v(" "),!t.hasCustomer&&(t.editing&&t.editMode||!t.draft.order.customerDeleted)?[e("customer-select",{attrs:{order:t.draft.order},on:{update:t.updateCustomer}})]:!t.hasCustomer&&t.draft.order.customerDeleted?[e("p",{staticClass:"warning has-icon"},[e("span",{staticClass:"icon",attrs:{"aria-hidden":"true"}}),e("span",{staticClass:"visually-hidden"},[t._v(t._s(t.$options.filters.t("Notice","app")))]),t._v(" "),e("span",[t._v(t._s(t.$options.filters.t("The customer for this order has been deleted.","commerce")))])])]:t._e()],2)]),t._v(" "),e("div",{staticClass:"order-flex order-box-sizing px-4 -mx-4",class:{pt:t.hasCustomer||t.hasAnAddress}},[e("div",{directives:[{name:"show",rawName:"v-show",value:!t.editing||!t.editMode,expression:"!editing || !editMode"}],staticClass:"w-1/2 pr"},[t.draft&&t.draft.order.billingAddressHtml?[e("ul",{staticClass:"order-address-display order-address-display--static",domProps:{innerHTML:t._s(t.draft.order.billingAddressHtml)}})]:[e("div",{staticClass:"zilch"},[t._v("\n "+t._s(t.$options.filters.t("No billing address","commerce"))+"\n ")])]],2),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.editing||!t.editMode,expression:"!editing || !editMode"}],staticClass:"w-1/2 pl"},[t.draft&&t.draft.order.shippingAddressHtml?[e("ul",{staticClass:"order-address-display order-address-display--static",domProps:{innerHTML:t._s(t.draft.order.shippingAddressHtml)}})]:[e("div",{staticClass:"zilch"},[t._v("\n "+t._s(t.$options.filters.t("No shipping address","commerce"))+"\n ")])]],2),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:(!t.hasCustomer&&t.draft.order.isCompleted||t.hasCustomer)&&t.editing&&t.editMode,expression:"\n ((!hasCustomer && draft.order.isCompleted) ||\n hasCustomer) &&\n editing &&\n editMode\n "}],staticClass:"w-1/2 pr"},[e("address-edit",{attrs:{title:t.titles.billingAddress,"model-name":"billing",address:t.draft.order.billingAddressHtml,"copy-to-address":t.$options.filters.t("shipping address","commerce"),"can-copy-to-user":t.canEditUsers&&null==t.draft.order.sourceBillingAddressId&&t.customerId&&t.draft.order.customer.isCredentialed,"customer-id":t.draft.order.customerId,"empty-message":t.$options.filters.t("No billing address","commerce"),"customer-updated":t.customerUpdatedTime},on:{update:t.updateBillingAddress,copy:function(e){return t.copyAddress("shipping")},copyAddressToUser:function(e){return t.copyToUser("billing")},remove:t.removeBillingAddress}})],1),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:(!t.hasCustomer&&t.draft.order.isCompleted||t.hasCustomer)&&t.editing&&t.editMode,expression:"\n ((!hasCustomer && draft.order.isCompleted) ||\n hasCustomer) &&\n editing &&\n editMode\n "}],staticClass:"w-1/2 pl"},[e("address-edit",{attrs:{title:t.titles.shippingAddress,"model-name":"shipping",address:t.draft.order.shippingAddressHtml,"copy-to-address":t.$options.filters.t("billing address","commerce"),"can-copy-to-user":t.canEditUsers&&null==t.draft.order.sourceShippingAddressId&&t.customerId&&t.draft.order.customer.isCredentialed,"customer-id":t.draft.order.customerId,"empty-message":t.$options.filters.t("No shipping address","commerce"),"customer-updated":t.customerUpdatedTime},on:{update:t.updateShippingAddress,copy:function(e){return t.copyAddress("billing")},copyAddressToUser:function(e){return t.copyToUser("shipping")},remove:t.removeShippingAddress}})],1)])]):t._e()}),[],!1,null,null,null).exports),li=s({name:"order-errors-app",computed:{draft:{get:function(){return JSON.parse(JSON.stringify(this.$store.state.draft))},set:function(t){this.$store.commit("updateDraft",t)}},draftErrors:function(){var t=[];if(this.draft&&this.draft.order&&this.draft.errors){var e=this.draft.errors;for(var n in e)if(e.hasOwnProperty(n)&&e[n].length)for(var r=0;r1?[e("div",{ref:"downloadPdfMenuBtn",staticClass:"btn menubtn"}),t._v(" "),e("div",{staticClass:"menu"},[e("ul",t._l(t.pdfUrls,(function(n,r){return e("li",{key:"pdfUrl"+r},[e("a",{attrs:{href:n.url,target:"_blank"}},[t._v(t._s(n.name))])])})),0)])]:t._e()],2)]):t._e(),t._v(" "),t.emailTemplates.length>0?[e("div",{staticClass:"btngroup send-email"},[e("div",{ref:"sendEmailMenuBtn",staticClass:"btn menubtn"},[t._v("\n "+t._s(t._f("t")("Send Email","commerce"))+"\n ")]),t._v(" "),e("div",{staticClass:"menu"},[e("ul",t._l(t.emailTemplates,(function(n,r){return e("li",{key:"emailTemplate"+r},[e("a",{attrs:{href:n.id},on:{click:function(e){return e.preventDefault(),t.sendEmail(n.id)}}},[t._v(t._s(n.name))])])})),0)])]),t._v(" "),t.emailLoading?e("div",[t._m(0)]):t._e()]:t._e(),t._v(" "),!t.editing&&t.totalCommittedStock>0&&!t.hasOrderChanged&&t.hasLineItems?[e("button",{staticClass:"btn fulfillment",on:{click:function(e){return e.preventDefault(),t.handleFulfillment.apply(null,arguments)}}},[t._v("\n "+t._s(t._f("t")("Fulfillment","commerce"))+"\n ")])]:t._e()],2)])}),[function(){var t=this._self._c;return t("div",{staticClass:"order-email-spinner"},[t("div",{staticClass:"spinner"})])}],!1,null,null,null)),mi=hi.exports,vi=n(2302),gi=n.n(vi);e().use(i());var bi=new(i().Store)({strict:!0,state:{recalculateLoading:!1,saveLoading:!1,editing:!1,draft:null,originalDraft:null,customers:[],orderData:null,recentlyAddedLineItems:[],unloadEventInit:!1,shippingMethodOptions:null},getters:{autoSetNewCartAddresses:function(){return window.orderEdit.autoSetNewCartAddresses},currentUserId:function(){return window.orderEdit.currentUserId},currentUserPermissions:function(){return window.orderEdit.currentUserPermissions},canDelete:function(t,e){return e.currentUserPermissions["commerce-deleteOrders"]},canEdit:function(t,e){return e.currentUserPermissions["commerce-editOrders"]},canEditUsers:function(t,e){return e.currentUserPermissions.editUsers},countries:function(){return window.orderEdit.countries},currencyConfig:function(){return window.orderEdit.currencyConfig},forceEdit:function(){return window.orderEdit.forceEdit},emailTemplates:function(){return window.orderEdit.emailTemplates},ordersIndexUrl:function(){return window.orderEdit.ordersIndexUrl},hasOrderChanged:function(t){return!gi()(t.draft,t.originalDraft)},orderId:function(){return window.orderEdit.orderId},totalCommittedStock:function(t){return t.draft?t.draft.order.totalCommittedStock:0},taxCategories:function(){return window.orderEdit.taxCategories},defaultTaxCategoryId:function(){return window.orderEdit.defaultTaxCategoryId},shippingCategories:function(){return window.orderEdit.shippingCategories},defaultShippingCategoryId:function(){return window.orderEdit.defaultShippingCategoryId},statesByCountryId:function(){return window.orderEdit.statesByCountryId},pdfUrls:function(){return window.orderEdit.pdfUrls},originalCustomer:function(){return window.orderEdit.originalCustomer},maxLineItems:function(t,e){return null},canAddLineItem:function(t,e){return!e.maxLineItems||t.draft.order.lineItems.length0},lineItemStatuses:function(){return window.orderEdit.lineItemStatuses},lineItemTypes:function(){return window.orderEdit.lineItemTypes},shippingMethods:function(t){return t.shippingMethodOptions?Object.values(t.shippingMethodOptions):[]},orderStatuses:function(){return window.orderEdit.orderStatuses},orderSites:function(){return window.orderEdit.orderSites},store:function(){return window.orderEdit.store},getErrors:function(t){return function(e){return t&&t.draft&&t.draft.order&&t.draft.errors&&t.draft.errors[e]?[t.draft.errors[e]]:[]}},hasLineItemErrors:function(t){return function(e){if(t&&t.draft&&t.draft.order&&t.draft.errors)for(var n=Object.keys(t.draft.errors),r=new RegExp("^lineItems\\."+e+"\\.","gm"),i=0;i div > a[href="#transactionsTab"]');if(t){t.classList.add("disabled"),t.href="",t.classList.remove("sel");var e=t.cloneNode(!0);e.addEventListener("click",(function(t){t.preventDefault()})),t.parentNode.replaceChild(e,t),window.document.querySelector("#transactionsTab").classList.add("hidden");var n=Craft.cp.tabManager,r=n.$menuBtn.data("disclosureMenu"),i=r.$container.find('[data-id="order-transactions"]');i.length>0&&$(i).disable().attr("disabled","disabled").css("pointer-events","none");var o=null,a=n.$selectedTab[0];n.on("selectTab",(function(t){o=a,a=$(t.$tab[0])})),r.on("optionselect",(function(t){"order-transactions"===$(t.selectedOption).data("id")&&o.trigger("activate")}))}},edit:function(t){var e=t.commit,n=t.state,r=t.dispatch,i=window.document.querySelectorAll("#tabs > div > a"),o=null,a=null,s=!1;if(i.forEach((function(t){"#orderDetailsTab"===t.getAttribute("href")&&n.draft.order.isCompleted&&(a=t),"#transactionsTab"===t.getAttribute("href")&&n.draft.order.isCompleted&&(s=t.classList.contains("sel"),r("disableTransactionsTab")),t.classList.contains("custom-tab")&&(t.classList.contains("sel")&&(o=t),t.classList.contains("static")?t.classList.add("hidden"):t.classList.remove("hidden"))})),s&&(a.classList.add("sel"),window.document.querySelector("#orderDetailsTab").classList.remove("hidden")),o&&o.classList.contains("static")){var l=o.getAttribute("href"),u="#"+l.substr(8,l.length-8);i.forEach((function(t){t.classList.contains("custom-tab")&&t.getAttribute("href")===u&&t.click()}))}e("updateEditing",!0),r("handleTabs")},handleTabs:function(t){var e=t.state,n=Craft.cp.tabManager;if(n&&n.menu){var r=n.menu.find('a[data-id^="static-fields-"]'),i=n.menu.find('a[data-id^="fields-"]');e.editing?(r.parent().addClass("hidden"),i.parent().removeClass("hidden")):(r.parent().removeClass("hidden"),i.parent().addClass("hidden"))}},getOrder:function(t){var e=t.state,n=t.commit;return n("updateRecalculateLoading",!0),function(){if(window.orderEdit.data)return new Promise((function(t){var e={};e.data=window.orderEdit.data,t(e)}))}().then((function(t){n("updateRecalculateLoading",!1);var r=t.data;e.originalDraft||n("updateOriginalDraft",r),n("updateDraft",r)})).catch((function(t){n("updateRecalculateLoading",!1);var e="Couldn’t get order.";throw t.response.data.error&&(e=t.response.data.error),e}))},deleteOrder:function(t){var e=t.getters,n=t.commit;return n("updateRecalculateLoading",!0),function(t){var e=new FormData;return e.append("orderId",t),or().post(Craft.getActionUrl("commerce/orders/delete-order"),e,{headers:{"X-CSRF-Token":Craft.csrfTokenValue}})}(e.orderId).then((function(){n("updateRecalculateLoading",!1)}))},customerSearch:function(t,e){var n,r,i,o,a=t.commit;return(n=e,r={},i=Object.assign({query:null,cancelToken:null},n),o={headers:{"X-CSRF-Token":Craft.csrfTokenValue}},void 0!==i.cancelToken&&i.cancelToken&&(o.cancelToken=i.cancelToken),void 0!==i.query&&i.query&&(r.query=encodeURIComponent(i.query)),or().get(Craft.getActionUrl("commerce/orders/customer-search",r),o)).then((function(t){a("updateCustomers",t.data.customers)}))},autoRecalculate:function(t){var e=t.state,n=t.dispatch,r=e.draft;return r.order.recalculationMode="all",n("recalculateOrder",r)},recalculateOrder:function(t,e){var n=t.commit;return n("updateRecalculateLoading",!0),function(t){return Craft.sendActionRequest("POST","commerce/orders/refresh",{data:t})}(ar.buildDraftData(e)).then((function(t){n("updateRecalculateLoading",!1);var e=t.data;if(n("updateDraft",e),t.data.error)throw{response:t}})).catch((function(t){n("updateRecalculateLoading",!1);var e="Couldn’t recalculate order.",r=t.response.data;if(n("updateDraft",r),t.response.data.error)throw e=t.response.data.error,{response:response};throw e}))},sendEmail:function(t,e){return function(t){return or().post(Craft.getActionUrl("commerce/orders/send-email",{id:t,orderId:window.orderEdit.orderId}),{},{headers:{"X-CSRF-Token":Craft.csrfTokenValue}})}(e)},validateAddress:function(t,e){return function(t){var e={address:t};return or().post(Craft.getActionUrl("commerce/orders/validate-address"),e,{headers:{"X-CSRF-Token":Craft.csrfTokenValue}})}(e).then((function(t){return t.data?t.data:t})).catch((function(t){var e="Couldn’t validate address.";throw t.response.data.error&&(e=t.response.data.error),e}))},copyAddressToUser:function(t,e){return function(t,e){var n={addressId:t,userId:e};return Craft.sendActionRequest("POST","commerce/orders/copy-address-to-user",{data:n})}(e.addressId,e.userId).then((function(t){return t.data?t.data:t})).catch((function(t){var e="Couldn’t copy address.";throw t.response.data.message&&(e=t.response.data.message),e}))},clearRecentlyAddedLineItems:function(t){t.state.recentlyAddedLineItems=[]}},mutations:{updateEditing:function(t,e){!t.unloadEventInit&&e&&(t.unloadEventInit=!0,window.addEventListener("beforeunload",(function(e){t.saveLoading||gi()(t.draft,t.originalDraft)||(e.preventDefault(),e.returnValue="")}))),t.editing=e},updateDraft:function(t,e){t.draft=e},updateDraftSuppressEmails:function(t,e){t.draft.order.suppressEmails=e},updateDraftOrderMessage:function(t,e){t.draft.order.message=e},updateOriginalDraft:function(t,e){t.originalDraft=e},updateCustomers:function(t,e){t.customers=e},updateRecalculateLoading:function(t,e){t.recalculateLoading=e},updateSaveLoading:function(t,e){t.saveLoading=e},updateOrderData:function(t,e){t.orderData=e},updateRecentlyAddedLineItems:function(t,e){t.recentlyAddedLineItems.push(e)},updateShippingMethodOptions:function(t,e){t.shippingMethodOptions=e}}});n(2364);var yi=s({},(function(){return(0,this._self._c)("div",{staticClass:"order-block py"},[this._t("default")],2)}),[],!1,null,null,null).exports,_i=(n(3954),s({},(function(){return(0,this._self._c)("h3",{staticClass:"order-title"},[this._t("default")],2)}),[],!1,null,null,null).exports),wi=s({components:{Field:l},props:{rowData:{type:Object,required:!0}}},(function(){var t=this,e=t._self._c;return e("div",[t.rowData.isAvailable?e("field",{scopedSlots:t._u([{key:"default",fn:function(n){return[e("input",{directives:[{name:"model",rawName:"v-model",value:t.rowData.qty,expression:"rowData.qty"}],staticClass:"text",attrs:{id:n.id,type:"text",size:"3",placeholder:"0"},domProps:{value:t.rowData.qty},on:{input:function(e){e.target.composing||t.$set(t.rowData,"qty",e.target.value)}}})]}}],null,!1,3158077025)}):t._e()],1)}),[],!1,null,null,null).exports;e().config.productionTip=!1,e().filter("t",(function(t,e,n){return Craft.t(e,t,n)})),e().component("btn-link",Rn),e().component("order-block",yi),e().component("order-title",_i),e().component("qty-input",wi),window.OrderActionsApp=new(e())({render:function(t){return t(Pr)},store:bi}).$mount("#order-actions-app"),window.OrderErrorsApp=new(e())({render:function(t){return t(ui)},store:bi}).$mount("#order-errors-app"),window.OrderCustomerApp=new(e())({render:function(t){return t(si)},store:bi}).$mount("#order-customer-app"),window.OrderDetailsApp=new(e())({render:function(t){return t(Wn)},store:bi,methods:{externalRefresh:function(){var t=this,e=this.$store.state.draft;this.$store.dispatch("recalculateOrder",e).then((function(){t.$store.dispatch("displayNotice",t.$options.filters.t("Order recalculated.","commerce"))})).catch((function(e){t.$store.dispatch("displayError",e)}))}},mounted:function(){var t=this;this.$store.dispatch("getOrder").finally((function(){t.$store.getters.hasLineItems||t.$store.dispatch("disableTransactionsTab")})),this.$store.watch((function(t,e){return e.hasOrderChanged}),(function(e,n){e&&t.$store.dispatch("disableTransactionsTab")}))}}).$mount("#order-details-app"),window.OrderMetaApp=new(e())({render:function(t){return t(vr)},store:bi}).$mount("#order-meta-app"),window.OrderNotices=new(e())({render:function(t){return t(yr)},store:bi}).$mount("#order-notices-app"),window.OrderSecondaryActionsApp=new(e())({render:function(t){return t(mi)},store:bi}).$mount("#order-secondary-actions-app")}()}(); -//# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/src/web/assets/commerceui/dist/js/app.js.map b/src/web/assets/commerceui/dist/js/app.js.map deleted file mode 100644 index 8496c775e3..0000000000 --- a/src/web/assets/commerceui/dist/js/app.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/app.js","mappings":"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","sources":["webpack:///../../../../../node_modules/axios/index.js","webpack:///../../../../../node_modules/axios/lib/adapters/xhr.js","webpack:///../../../../../node_modules/axios/lib/axios.js","webpack:///../../../../../node_modules/axios/lib/cancel/CancelToken.js","webpack:///../../../../../node_modules/axios/lib/cancel/CanceledError.js","webpack:///../../../../../node_modules/axios/lib/cancel/isCancel.js","webpack:///../../../../../node_modules/axios/lib/core/Axios.js","webpack:///../../../../../node_modules/axios/lib/core/AxiosError.js","webpack:///../../../../../node_modules/axios/lib/core/InterceptorManager.js","webpack:///../../../../../node_modules/axios/lib/core/buildFullPath.js","webpack:///../../../../../node_modules/axios/lib/core/dispatchRequest.js","webpack:///../../../../../node_modules/axios/lib/core/mergeConfig.js","webpack:///../../../../../node_modules/axios/lib/core/settle.js","webpack:///../../../../../node_modules/axios/lib/core/transformData.js","webpack:///../../../../../node_modules/axios/lib/defaults/index.js","webpack:///../../../../../node_modules/axios/lib/defaults/transitional.js","webpack:///../../../../../node_modules/axios/lib/env/classes/FormData.js","webpack:///../../../../../node_modules/axios/lib/env/data.js","webpack:///../../../../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack:///../../../../../node_modules/axios/lib/helpers/bind.js","webpack:///../../../../../node_modules/axios/lib/helpers/buildURL.js","webpack:///../../../../../node_modules/axios/lib/helpers/combineURLs.js","webpack:///../../../../../node_modules/axios/lib/helpers/cookies.js","webpack:///../../../../../node_modules/axios/lib/helpers/formDataToJSON.js","webpack:///../../../../../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///../../../../../node_modules/axios/lib/helpers/isAxiosError.js","webpack:///../../../../../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///../../../../../node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///../../../../../node_modules/axios/lib/helpers/parseHeaders.js","webpack:///../../../../../node_modules/axios/lib/helpers/parseProtocol.js","webpack:///../../../../../node_modules/axios/lib/helpers/spread.js","webpack:///../../../../../node_modules/axios/lib/helpers/toFormData.js","webpack:///../../../../../node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack:///../../../../../node_modules/axios/lib/helpers/validator.js","webpack:///../../../../../node_modules/axios/lib/platform/browser/classes/FormData.js","webpack:///../../../../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack:///../../../../../node_modules/axios/lib/platform/browser/index.js","webpack:///../../../../../node_modules/axios/lib/platform/index.js","webpack:///../../../../../node_modules/axios/lib/utils.js","webpack:///../../../../../node_modules/form-data/lib/browser.js","webpack:///../../../../../node_modules/lodash.debounce/index.js","webpack:///../../../../../node_modules/lodash.find/index.js","webpack:///../../../../../node_modules/lodash.isequal/index.js","webpack:///../../../../../node_modules/lodash.isobjectlike/index.js","webpack:///../../../../../node_modules/lodash/lodash.js","webpack:///../../../../../node_modules/vue-prism-editor/dist/VuePrismEditor.common.js","webpack:///../../../../../node_modules/vue-select/dist/vue-select.js","webpack:///../../../../../node_modules/prismjs/themes/prism.css?dc49","webpack:///../../../../../node_modules/@craftcms/vue/admintable/App.vue?7c54","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableCheckbox.vue?1e10","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableDetailRow.vue?609c","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTablePagination.vue?f3bf","webpack:///../../../../../node_modules/vuetable-2/src/components/Vuetable.vue?91ab","webpack:///./js/base/components/BtnLink.vue?5282","webpack:///./js/base/components/Modal.vue?9f63","webpack:///./js/base/components/SelectInput.vue?5341","webpack:///./js/order/apps/OrderActions.vue?4241","webpack:///./js/order/apps/OrderCustomer.vue?82e5","webpack:///./js/order/apps/OrderDetails.vue?0ba6","webpack:///./js/order/apps/OrderMeta.vue?1459","webpack:///./js/order/apps/OrderNotices.vue?f8ea","webpack:///./js/order/apps/OrderSecondaryActions.vue?fbda","webpack:///./js/order/components/OrderBlock.vue?171c","webpack:///./js/order/components/OrderTitle.vue?45b5","webpack:///./js/order/components/actions/OptionShortcutLabel.vue?4e5f","webpack:///./js/order/components/customer/AddressEdit.vue?c313","webpack:///./js/order/components/customer/AddressSelect.vue?2417","webpack:///./js/order/components/customer/Customer.vue?2137","webpack:///./js/order/components/details/AddLineItem.vue?fa36","webpack:///./js/order/components/details/Adjustment.vue?ed98","webpack:///./js/order/components/details/Adjustments.vue?874e","webpack:///./js/order/components/details/LineItem.vue?dade","webpack:///./js/order/components/details/LineItemOptions.vue?8132","webpack:///./js/order/components/details/LineItemProperty.vue?940d","webpack:///./js/order/components/details/LineItems.vue?0ff6","webpack:///./js/order/components/details/Snapshot.vue?2dac","webpack:///./js/order/components/meta/CustomerSelect.vue?84ba","webpack:///./js/order/components/meta/OrderSite.vue?bc34","webpack:///./js/order/components/meta/OrderStatus.vue?e6a3","webpack:///./js/order/components/meta/ShippingMethod.vue?c167","webpack:///../../../../../node_modules/vue-style-loader/lib/listToStyles.js","webpack:///../../../../../node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///../../../../../node_modules/vuelidate/lib/index.js","webpack:///../../../../../node_modules/vuelidate/lib/params.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/alpha.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/alphaNum.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/and.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/between.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/common.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/decimal.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/email.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/index.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/integer.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/ipAddress.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/macAddress.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/maxLength.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/maxValue.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/minLength.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/minValue.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/not.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/numeric.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/or.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/required.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/requiredIf.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/requiredUnless.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/sameAs.js","webpack:///../../../../../node_modules/vuelidate/lib/validators/url.js","webpack:///../../../../../node_modules/vuelidate/lib/vval.js","webpack:///../../../../../node_modules/vuelidate/lib/withParams.js","webpack:///../../../../../node_modules/vuelidate/lib/withParamsBrowser.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/node module decorator","webpack:///external var \"Vue\"","webpack:///external var \"Vuex\"","webpack:///../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./js/base/components/Field.vue?3a72","webpack:///js/base/components/Field.vue","webpack:///./js/base/components/Field.vue","webpack:///js/order/components/details/LineItemStatusInput.vue","webpack:///./js/order/components/details/LineItemStatusInput.vue?0509","webpack:///./js/order/components/details/LineItemStatusInput.vue","webpack:///js/order/components/details/LineItemStatus.vue","webpack:///./js/order/components/details/LineItemStatus.vue?213f","webpack:///./js/order/components/details/LineItemStatus.vue","webpack:///./js/base/components/Modal.vue?ca15","webpack:///js/base/components/Modal.vue","webpack:///js/order/components/details/LineItemOptions.vue","webpack:///./js/order/components/details/LineItemOptions.vue?94a9","webpack:///./js/base/components/Modal.vue?7454","webpack:///./js/base/components/Modal.vue","webpack:///./js/order/components/details/LineItemOptions.vue?9ed0","webpack:///./js/order/components/details/LineItemOptions.vue","webpack:///./js/order/components/details/LineItemNotes.vue?97f6","webpack:///js/order/components/details/LineItemNotes.vue","webpack:///./js/order/components/details/LineItemNotes.vue","webpack:///js/order/components/details/Adjustment.vue","webpack:///./js/order/components/details/Adjustment.vue?437a","webpack:///./js/order/components/details/Adjustments.vue?7c21","webpack:///js/order/components/details/Adjustments.vue","webpack:///./js/order/components/details/Adjustment.vue?9027","webpack:///./js/order/components/details/Adjustment.vue","webpack:///./js/order/components/details/Adjustments.vue?5809","webpack:///./js/order/components/details/Adjustments.vue","webpack:///js/order/components/details/LineItemAdjustments.vue","webpack:///./js/order/components/details/LineItemAdjustments.vue?6410","webpack:///./js/order/components/details/LineItemAdjustments.vue","webpack:///./js/base/components/Lightswitch.vue?f132","webpack:///js/base/components/Lightswitch.vue","webpack:///./js/base/components/Lightswitch.vue","webpack:///./js/order/components/details/LineItemProperty.vue?cced","webpack:///js/order/components/details/LineItemProperty.vue","webpack:///./js/order/components/details/LineItemProperty.vue?90d1","webpack:///./js/order/components/details/LineItemProperty.vue","webpack:///./js/order/components/details/Snapshot.vue?05e3","webpack:///js/order/components/details/Snapshot.vue","webpack:///./js/order/components/details/Snapshot.vue?a7d1","webpack:///./js/order/components/details/Snapshot.vue","webpack:///./js/base/components/SelectInput.vue","webpack:///./js/order/components/meta/OpenIndicator.vue?76ef","webpack:///./js/order/components/meta/OpenIndicator.vue","webpack:///./js/base/components/SelectInput.vue?590a","webpack:///js/base/components/SelectInput.vue","webpack:///./js/base/components/SelectInput.vue?3b83","webpack:///js/order/components/details/LineItem.vue","webpack:///./js/order/components/details/LineItem.vue?8f67","webpack:///./js/order/components/details/LineItems.vue?1f3e","webpack:///js/order/components/details/LineItems.vue","webpack:///./js/order/components/details/LineItem.vue?c347","webpack:///./js/order/components/details/LineItem.vue","webpack:///./js/order/components/details/LineItems.vue?7f4f","webpack:///./js/order/components/details/LineItems.vue","webpack:///external var \"axios\"","webpack:///../../../../../node_modules/vuetable-2/src/components/Vuetable.vue","webpack:///../../../../../node_modules/vuetable-2/src/components/Vuetable.vue?2800","webpack:///../../../../../node_modules/vuetable-2/src/components/Vuetable.vue?be8f","webpack:///../../../../../node_modules/vuetable-2/src/components/Vuetable.vue?7ed4","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTablePagination.vue?c16c","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTablePagination.vue","webpack:///../../../../../node_modules/vuetable-2/src/components/VuetablePaginationMixin.vue?d987","webpack:///../../../../../node_modules/vuetable-2/src/components/VuetablePaginationMixin.vue","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTablePagination.vue?022d","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTablePagination.vue?79bb","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableDeleteButton.vue?5e7f","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableDeleteButton.vue","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableDeleteButton.vue?efcc","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableCheckbox.vue?5836","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableCheckbox.vue","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableCheckbox.vue?2c2f","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableCheckbox.vue?db3b","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableActionButton.vue?e84f","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableActionButton.vue","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableActionButton.vue?a9e7","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableDetailRow.vue?04a4","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableDetailRow.vue","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableDetailRow.vue?4a79","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableDetailRow.vue?05de","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableButton.vue?8036","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableButton.vue","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableButton.vue?260b","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableCopyTextButton.vue?9ecd","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableCopyTextButton.vue","webpack:///../../../../../node_modules/@craftcms/vue/admintable/components/AdminTableCopyTextButton.vue?026e","webpack:///../../../../../node_modules/sortablejs/modular/sortable.esm.js","webpack:///../../../../../node_modules/@craftcms/vue/admintable/App.vue","webpack:///../../../../../node_modules/@craftcms/vue/admintable/App.vue?c5f9","webpack:///../../../../../node_modules/@craftcms/vue/admintable/App.vue?c53a","webpack:///../../../../../node_modules/@craftcms/vue/admintable/App.vue?68ad","webpack:///js/order/components/details/AddLineItem.vue","webpack:///./js/order/components/details/AddLineItem.vue?5747","webpack:///./js/order/components/details/AddLineItem.vue?b054","webpack:///./js/order/components/details/AddLineItem.vue","webpack:///./js/base/components/BtnLink.vue?ad69","webpack:///js/base/components/BtnLink.vue","webpack:///./js/base/components/BtnLink.vue?0008","webpack:///./js/base/components/BtnLink.vue","webpack:///js/order/apps/OrderDetails.vue","webpack:///./js/order/apps/OrderDetails.vue?0e4b","webpack:///./js/order/components/details/OrderAdjustments.vue?94f0","webpack:///js/order/components/details/OrderAdjustments.vue","webpack:///./js/order/components/details/OrderAdjustments.vue","webpack:///./js/order/components/details/Total.vue?6118","webpack:///js/order/components/details/Total.vue","webpack:///./js/order/components/details/Total.vue","webpack:///./js/order/apps/OrderDetails.vue?a582","webpack:///./js/order/apps/OrderDetails.vue","webpack:///js/order/components/meta/OrderStatus.vue","webpack:///./js/order/components/meta/OrderStatus.vue?3757","webpack:///./js/order/components/meta/OrderStatus.vue?467a","webpack:///./js/order/components/meta/OrderStatus.vue","webpack:///js/order/components/meta/OrderSite.vue","webpack:///./js/order/components/meta/OrderSite.vue?517b","webpack:///./js/order/components/meta/OrderSite.vue?38bc","webpack:///./js/order/components/meta/OrderSite.vue","webpack:///./js/order/helpers/utils.js","webpack:///js/order/components/meta/ShippingMethod.vue","webpack:///./js/order/components/meta/ShippingMethod.vue?d6ea","webpack:///./js/order/api/orders.js","webpack:///./js/order/components/meta/ShippingMethod.vue?ee33","webpack:///./js/order/components/meta/ShippingMethod.vue","webpack:///./js/order/mixins/index.js","webpack:///js/order/apps/OrderMeta.vue","webpack:///./js/order/apps/OrderMeta.vue?90ce","webpack:///./js/order/components/meta/DateOrderedInput.vue?81d4","webpack:///js/order/components/meta/DateOrderedInput.vue","webpack:///./js/order/components/meta/DateOrderedInput.vue","webpack:///./js/order/apps/OrderMeta.vue?2cd7","webpack:///./js/order/apps/OrderMeta.vue","webpack:///./js/order/apps/OrderNotices.vue?8e0d","webpack:///js/order/apps/OrderNotices.vue","webpack:///./js/order/apps/OrderNotices.vue?7810","webpack:///./js/order/apps/OrderNotices.vue","webpack:///./js/order/components/actions/OptionShortcutLabel.vue?3281","webpack:///js/order/components/actions/OptionShortcutLabel.vue","webpack:///./js/order/components/actions/OptionShortcutLabel.vue?bcc3","webpack:///./js/order/components/actions/OptionShortcutLabel.vue","webpack:///js/order/apps/OrderActions.vue","webpack:///./js/order/apps/OrderActions.vue?fc99","webpack:///./js/order/components/actions/UpdateOrderBtn.vue?758c","webpack:///js/order/components/actions/UpdateOrderBtn.vue","webpack:///./js/order/components/actions/UpdateOrderBtn.vue","webpack:///./js/order/apps/OrderActions.vue?05f1","webpack:///./js/order/apps/OrderActions.vue","webpack:///js/order/components/customer/Customer.vue","webpack:///./js/order/components/customer/Customer.vue?7151","webpack:///./js/order/components/customer/Customer.vue?5cea","webpack:///./js/order/components/customer/Customer.vue","webpack:///js/order/components/customer/AddressSelect.vue","webpack:///./js/order/components/customer/AddressSelect.vue?9d64","webpack:///./js/order/components/customer/AddressSelect.vue?9d54","webpack:///./js/order/components/customer/AddressSelect.vue","webpack:///js/order/components/customer/AddressEdit.vue","webpack:///./js/order/components/customer/AddressEdit.vue?e2da","webpack:///./js/order/components/customer/AddressEdit.vue?3cc1","webpack:///./js/order/components/customer/AddressEdit.vue","webpack:///js/order/components/meta/CustomerSelect.vue","webpack:///./js/order/components/meta/CustomerSelect.vue?4185","webpack:///./js/order/components/meta/CustomerSelect.vue?775c","webpack:///./js/order/components/meta/CustomerSelect.vue","webpack:///js/order/apps/OrderCustomer.vue","webpack:///./js/order/apps/OrderCustomer.vue?3f5a","webpack:///./js/order/apps/OrderCustomer.vue?6dca","webpack:///./js/order/apps/OrderCustomer.vue","webpack:///./js/order/apps/OrderErrors.vue?ba4b","webpack:///js/order/apps/OrderErrors.vue","webpack:///./js/order/apps/OrderErrors.vue","webpack:///js/order/apps/OrderSecondaryActions.vue","webpack:///./js/order/apps/OrderSecondaryActions.vue?814a","webpack:///./js/order/apps/OrderSecondaryActions.vue?9f8b","webpack:///./js/order/apps/OrderSecondaryActions.vue","webpack:///./js/order/store/index.js","webpack:///./js/order/api/addresses.js","webpack:///./js/order/components/OrderBlock.vue","webpack:///./js/order/components/OrderBlock.vue?91f5","webpack:///./js/order/components/OrderTitle.vue?0c21","webpack:///./js/order/components/OrderTitle.vue","webpack:///./js/order/components/details/QtyInput.vue?3e8c","webpack:///js/order/components/details/QtyInput.vue","webpack:///./js/order/components/details/QtyInput.vue","webpack:///./js/order/app.js","webpack:///./js/base/filters/craft.js"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\nvar platform = require('../platform');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var withXSRFToken = config.withXSRFToken;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n var xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, req) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n // false, 0 (zero number), and '' (empty string) are valid JSON values\n if (!requestData && requestData !== false && requestData !== 0 && requestData !== '') {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\nvar formDataToJSON = require('./helpers/formDataToJSON');\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\naxios.formToJSON = function(thing) {\n return formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n};\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n var paramsSerializer = config.paramsSerializer;\n\n utils.isFunction(paramsSerializer) && (config.paramsSerializer = {serialize: paramsSerializer});\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Clear all interceptors from the stack\n */\nInterceptorManager.prototype.clear = function clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n null,\n config.transformRequest\n );\n\n normalizeHeaderName(config.headers, 'Accept');\n normalizeHeaderName(config.headers, 'Content-Type');\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n response.status,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n reason.response.status,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isEmptyObject(source)) {\n return utils.merge({}, target);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'withXSRFToken': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Number} status HTTP status code\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, status, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers, status);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\nvar toURLEncodedForm = require('../helpers/toURLEncodedForm');\nvar platform = require('../platform');\nvar formDataToJSON = require('../helpers/formDataToJSON');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n var contentType = headers && headers['Content-Type'] || '';\n var hasJSONContentType = contentType.indexOf('application/json') > -1;\n var isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n var isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') !== -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n var _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","// eslint-disable-next-line strict\nmodule.exports = require('form-data');\n","module.exports = {\n \"version\": \"0.28.0\"\n};","'use strict';\n\nvar toFormData = require('./toFormData');\n\nfunction encode(str) {\n var charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nvar prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n var _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nmodule.exports = AxiosURLSearchParams;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar AxiosURLSearchParams = require('../helpers/AxiosURLSearchParams');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n var _encode = options && options.encode || encode;\n\n var serializerParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n\n if (serializerParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializerParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(function(match) {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\nfunction arrayToObject(arr) {\n var obj = {};\n var keys = Object.keys(arr);\n var i;\n var len = keys.length;\n var key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n var name = path[index++];\n var isNumericKey = Number.isFinite(+name);\n var isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProperty(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n var result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n var obj = {};\n\n utils.forEachEntry(formData, function(name, value) {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nmodule.exports = formDataToJSON;\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.slice(0, i)).toLowerCase();\n val = utils.trim(line.slice(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar AxiosError = require('../core/AxiosError');\nvar envFormData = require('../env/classes/FormData');\n\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nvar predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\nfunction isSpecCompliant(thing) {\n return thing && utils.isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator];\n}\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (envFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n var metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n var visitor = options.visitor || defaultVisitor;\n var dots = options.dots;\n var indexes = options.indexes;\n var _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n var useBlob = _Blob && isSpecCompliant(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n var arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n (utils.isFileList(value) || utils.endsWith(key, '[]') && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !utils.isUndefined(el) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n var stack = [];\n\n var exposedHelpers = Object.assign(predicates, {\n defaultVisitor: defaultVisitor,\n convertValue: convertValue,\n isVisitable: isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n var result = !utils.isUndefined(el) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar utils = require('../utils');\nvar toFormData = require('./toFormData');\nvar platform = require('../platform/');\n\nmodule.exports = function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nmodule.exports = FormData;\n","'use strict';\n\nvar AxiosURLSearchParams = require('../../../helpers/AxiosURLSearchParams');\n\nmodule.exports = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nmodule.exports = {\n isBrowser: true,\n classes: {\n URLSearchParams: require('./classes/URLSearchParams'),\n FormData: require('./classes/FormData'),\n Blob: Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nmodule.exports = require('./node/');\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a empty Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a empty Object, otherwise false\n */\nfunction isEmptyObject(val) {\n return val && Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n var product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter, propFilter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n * @param {*} [thing]\n * @returns {?Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n var i = thing.length;\n if (!isNumber(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nfunction forEachEntry(obj, fn) {\n var generator = obj && obj[Symbol.iterator];\n\n var iterator = generator.call(obj);\n\n var result;\n\n while ((result = iterator.next()) && !result.done) {\n var pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\nfunction matchAll(regExp, str) {\n var matches;\n var arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\nvar isHTMLForm = kindOfTest('HTMLFormElement');\n\nvar hasOwnProperty = (function resolver(_hasOwnProperty) {\n return function(obj, prop) {\n return _hasOwnProperty.call(obj, prop);\n };\n})(Object.prototype.hasOwnProperty);\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isEmptyObject: isEmptyObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList,\n forEachEntry: forEachEntry,\n matchAll: matchAll,\n isHTMLForm: isHTMLForm,\n hasOwnProperty: hasOwnProperty\n};\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity]\n * The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array ? array.length : 0;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity]\n * The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = find;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\n * lodash 4.0.0 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"order-field field\",class:_vm.classes,attrs:{\"id\":'field-' + _vm.id}},[(_vm.label || _vm.instructions)?_c('div',{staticClass:\"heading\"},[(_vm.label)?_c('label',{class:{required: _vm.required, error: _vm.errors && _vm.errors.length},attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.label))]):_vm._e(),_vm._v(\" \"),(_vm.instructions)?_c('div',{staticClass:\"instructions\"},[_c('p',[_vm._v(_vm._s(_vm.instructions))])]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"input\",class:_vm.inputClass},[_vm._t(\"default\",null,{\"id\":_vm.id})],2),_vm._v(\" \"),(_vm.errors && _vm.errors.length > 0)?[_c('ul',{staticClass:\"errors\"},_vm._l((_vm.errors),function(error,key){return _c('li',{key:_vm.id + 'error' + key},[_vm._v(\"\\n \"+_vm._s(error)+\"\\n \")])}),0)]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import { render, staticRenderFns } from \"./LineItemStatusInput.vue?vue&type=template&id=3997ff21&\"\nimport script from \"./LineItemStatusInput.vue?vue&type=script&lang=js&\"\nexport * from \"./LineItemStatusInput.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('a',{ref:\"lineItemStatus\",staticClass:\"btn menubtn\"},[(_vm.lineItemStatus.color)?[_c('span',{staticClass:\"status\",class:{[_vm.lineItemStatus.color]: true}})]:[_c('span',{staticClass:\"status\"})],_vm._v(\"\\n\\n \"+_vm._s(_vm.lineItemStatus.uiLabel)+\"\\n \")],2),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',{staticClass:\"padded\",attrs:{\"role\":\"listbox\"}},[_c('li',[_c('a',{attrs:{\"data-id\":\"0\",\"data-name\":_vm.$options.filters.t('None', 'commerce')}},[_c('span',{staticClass:\"status\"}),_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('None','commerce'))+\"\\n \")])]),_vm._v(\" \"),_vm._l((_vm.lineItemStatuses),function(status,key){return _c('li',{key:key},[_c('a',{class:{sel: _vm.lineItemStatus.id === status.value},attrs:{\"data-id\":status.id,\"data-color\":status.color,\"data-name\":status.uiLabel}},[_c('span',{staticClass:\"status\",class:{[status.color]: true}}),_vm._v(\"\\n \"+_vm._s(status.uiLabel)+\"\\n \")])])})],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import { render, staticRenderFns } from \"./LineItemStatus.vue?vue&type=template&id=40bc6d40&\"\nimport script from \"./LineItemStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./LineItemStatus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.editing && _vm.lineItemStatuses.length > 0)?[_c('line-item-status-input',{attrs:{\"lineItem\":_vm.lineItem,\"editing\":_vm.editing},on:{\"change\":function($event){return _vm.$emit('change', $event)}}})]:[_c('span',{staticClass:\"status-label\",class:{\n [_vm.lineItemStatus.color]: _vm.lineItemStatus.color ? true : false,\n gray: _vm.lineItemStatus.color ? false : true,\n }},[(_vm.lineItemStatus.color)?_c('span',{staticClass:\"status\",class:{[_vm.lineItemStatus.color]: true}}):_c('span',{staticClass:\"status disabled\"}),_vm._v(\" \"),_c('span',{staticClass:\"status-label-text\"},[_vm._v(_vm._s(_vm.lineItemStatus.uiLabel))])])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","\n \n\n \n {{ $options.filters.t('Edit options', 'commerce') }}\n \n
\n \n\n \n \n \n\n
    0\" class=\"errors\">\n
  • \n {{ error }}\n
  • \n
\n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItemOptions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItemOptions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Modal.vue?vue&type=template&id=6ea70eb8&\"\nimport script from \"./Modal.vue?vue&type=script&lang=js&\"\nexport * from \"./Modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Modal.vue?vue&type=style&index=0&id=6ea70eb8&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"hidden\"},[_c('div',{ref:\"modal\",staticClass:\"vue-commerce-modal modal\",attrs:{\"modal-class\":_vm.modalClass}},[_c('div',{staticClass:\"body\"},[_vm._t(\"body\")],2),_vm._v(\" \"),(_vm.showFooter)?_c('div',{staticClass:\"footer\"},[_vm._t(\"footer\",function(){return [_c('div',{staticClass:\"buttons right\"},[_vm._t(\"buttons\")],2)]})],2):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./LineItemOptions.vue?vue&type=template&id=221707e8&\"\nimport script from \"./LineItemOptions.vue?vue&type=script&lang=js&\"\nexport * from \"./LineItemOptions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LineItemOptions.vue?vue&type=style&index=0&id=221707e8&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (Object.keys(_vm.lineItem.options).length || _vm.editing)?_c('order-block',{staticClass:\"order-flex\"},[_c('div',{staticClass:\"w-1/5\"},[_c('h3',[_vm._v(_vm._s(_vm._f(\"t\")('Options','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"w-4/5\"},[(Object.keys(_vm.lineItem.options).length)?[(_vm.lineItem.showForm)?[_vm._l((_vm.lineItem.options),function(option,key){return [_c('div',{key:'option-' + key,staticClass:\"order-flex\"},[_c('div',{key:'option-' + key,staticClass:\"line-item-option-key\"},[_vm._v(\"\\n \"+_vm._s(key)+\":\\n \")]),_vm._v(\" \"),_c('div',{key:'option-' + key,staticClass:\"line-item-option-value\"},[(\n Array.isArray(option) ||\n _vm.isObjectLike(option)\n )?[_c('code',[_vm._v(_vm._s(option))])]:[_vm._v(_vm._s(option))]],2)])]})]:[(\n Array.isArray(_vm.lineItem.options) &&\n _vm.lineItem.options.length\n )?[_c('ul',{staticClass:\"line-item-options-list bullets\"},_vm._l((_vm.lineItem.options),function(row,key){return _c('li',{key:key},[_vm._v(\"\\n \"+_vm._s(row)+\"\\n \")])}),0)]:[_c('code',[_vm._v(_vm._s(_vm.lineItem.options))])]]]:_vm._e(),_vm._v(\" \"),(_vm.editing)?_c('div',{class:{\n pt:\n Object.keys(_vm.lineItem.options).length ||\n _vm.lineItem.options.length,\n }},[_c('btn-link',{ref:\"editButton\",attrs:{\"button-class\":'btn edit icon'},on:{\"click\":_vm.onEditOptions}},[_vm._v(_vm._s(_vm.$options.filters.t('Edit options', 'commerce'))+\"\\n \")])],1):_vm._e()],2),_vm._v(\" \"),_c('modal',{attrs:{\"show-footer\":true,\"show\":_vm.showModal,\"hide\":_vm.hideModal},on:{\"onHide\":_vm.onModalHide,\"onShow\":_vm.onModalShow},scopedSlots:_vm._u([{key:\"body\",fn:function(){return [(_vm.lineItem.showForm)?[_c('div',{staticClass:\"options-form\"},[_vm._l((_vm.options),function(option,key){return [_c('div',{key:key,staticClass:\"order-flex order-box-sizing pb\",class:{\n 'align-center':\n option.type == 'string' ||\n (option.type == 'prism' &&\n !_vm.isObjectLike(\n _vm.lineItem.options[option.key]\n )),\n }},[_c('field',{staticClass:\"w-1/3\",scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('div',{staticClass:\"options-field-pad-side\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options[key]['key']),expression:\"options[key]['key']\"}],ref:'option-key-' + key,refInFor:true,staticClass:\"text fullwidth\",class:{\n error:\n _vm.errorKeys.indexOf(\n _vm.options[key]['key']\n ) >= 0,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\"},domProps:{\"value\":(_vm.options[key]['key'])},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.options[key], 'key', $event.target.value)},_vm.onOptionsChange]}})])]}}],null,true)}),_vm._v(\" \"),_c('field',{staticClass:\"w-2/3\",attrs:{\"input-class\":{\n 'force-height':\n option.type == 'prism' &&\n !_vm.isObjectLike(option.value),\n }},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [(option.type == 'string')?[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options[key]['value']),expression:\"options[key]['value']\"}],staticClass:\"text fullwidth\",attrs:{\"id\":slotProps.id,\"type\":\"text\"},domProps:{\"value\":(_vm.options[key]['value'])},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.options[key], 'value', $event.target.value)},_vm.onOptionsChange]}})]:(option.type == 'prism')?[(_vm.renderPrism)?_c('prism-editor',{ref:\"prismEditor\",refInFor:true,staticClass:\"text\",class:{\n 'force-height':\n option.type == 'prism' &&\n !_vm.isObjectLike(option.value),\n error:\n _vm.errorValues.indexOf(\n _vm.options[key]['key']\n ) >= 0,\n },attrs:{\"language\":\"js\"},on:{\"change\":_vm.onOptionsChange},model:{value:(_vm.options[key]['value']),callback:function ($$v) {_vm.$set(_vm.options[key], 'value', $$v)},expression:\"options[key]['value']\"}}):_vm._e()]:_vm._e()]}}],null,true)}),_vm._v(\" \"),_c('div',{staticClass:\"pl\"},[_c('a',{staticClass:\"icon delete\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onRemoveOption(key)}}})])],1)]})],2)]:[(_vm.renderPrism)?_c('prism-editor',{ref:\"prismEditor\",staticClass:\"text\",attrs:{\"language\":\"js\"},on:{\"change\":_vm.onOptionsChange},model:{value:(_vm.options),callback:function ($$v) {_vm.options=$$v},expression:\"options\"}}):_vm._e()],_vm._v(\" \"),(_vm.errors.length > 0)?_c('ul',{staticClass:\"errors\"},_vm._l((_vm.errors),function(error,key){return _c('li',{key:key},[_vm._v(\"\\n \"+_vm._s(error)+\"\\n \")])}),0):_vm._e()]},proxy:true},{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"buttons\"},[_c('div',{staticClass:\"order-flex justify-between w-full\"},[_c('div',[_c('div',{staticClass:\"order-flex align-center\"},[(_vm.lineItem.showForm)?_c('btn-link',{ref:\"addButton\",attrs:{\"button-class\":'btn add icon'},on:{\"click\":_vm.onAddOption}},[_vm._v(_vm._s(_vm.$options.filters.t(\n 'Add an option',\n 'commerce'\n ))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"pl\",class:{hidden: !_vm.isWaiting}},[_c('span',{staticClass:\"spinner\"})])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"order-flex\"},[_c('div',{staticClass:\"options-field-pad-side\"},[_c('btn-link',{attrs:{\"button-class\":\"btn\"},on:{\"click\":_vm.closeModal}},[_vm._v(_vm._s(_vm.$options.filters.t('Cancel', 'commerce')))])],1),_vm._v(\" \"),_c('btn-link',{class:{disabled: _vm.hasErrors},attrs:{\"button-class\":\"btn submit\",\"disabled\":_vm.hasErrors},on:{\"click\":_vm.updateLineItem}},[_vm._v(_vm._s(_vm.$options.filters.t('Done', 'commerce')))])],1)])])]},proxy:true}],null,false,1049417279)})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./LineItemNotes.vue?vue&type=template&id=053b0ea5&\"\nimport script from \"./LineItemNotes.vue?vue&type=script&lang=js&\"\nexport * from \"./LineItemNotes.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"w-full\"},[(_vm.note || _vm.editing)?_c('order-block',{staticClass:\"order-flex w-full\"},[_c('div',{staticClass:\"w-1/5\"},[_c('h3',[_vm._v(_vm._s(_vm._f(\"t\")('Customer Note','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"w-4/5\"},[(!_vm.editing)?[_vm._v(\"\\n \"+_vm._s(_vm.note)+\"\\n \")]:[_c('field',{scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note),expression:\"note\"}],staticClass:\"text fullwidth\",attrs:{\"id\":slotProps.id},domProps:{\"value\":(_vm.note)},on:{\"input\":function($event){if($event.target.composing)return;_vm.note=$event.target.value}}})]}}],null,false,2313606058)})]],2)]):_vm._e(),_vm._v(\" \"),(_vm.privateNote || _vm.editing)?_c('order-block',{staticClass:\"order-flex w-full\"},[_c('div',{staticClass:\"w-1/5\"},[_c('h3',[_vm._v(_vm._s(_vm._f(\"t\")('Private Note','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"w-4/5\"},[(!_vm.editing)?[_vm._v(\"\\n \"+_vm._s(_vm.privateNote)+\"\\n \")]:[_c('field',{scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.privateNote),expression:\"privateNote\"}],staticClass:\"text fullwidth\",attrs:{\"id\":slotProps.id},domProps:{\"value\":(_vm.privateNote)},on:{\"input\":function($event){if($event.target.composing)return;_vm.privateNote=$event.target.value}}})]}}],null,false,2888662186)})]],2)]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Adjustment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Adjustment.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Adjustments.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Adjustments.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Adjustment.vue?vue&type=template&id=78722bb6&\"\nimport script from \"./Adjustment.vue?vue&type=script&lang=js&\"\nexport * from \"./Adjustment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Adjustment.vue?vue&type=style&index=0&id=78722bb6&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"adjustment order-flex\",class:{'align-center': !_vm.showLabels}},[(_vm.editing && _vm.recalculationMode === 'none')?[_c('div',{staticClass:\"fields order-flex\"},[_c('field',{attrs:{\"label\":_vm.showLabels ? _vm.$options.filters.t('Type', 'commerce') : '',\"required\":true},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [(_vm.isAllowedAdjustmentType)?_c('div',{staticClass:\"select\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.type),expression:\"type\"}],attrs:{\"id\":slotProps.id},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.type=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.adjustmentOptions),function(adjustmentOption,key){return _c('option',{key:key,domProps:{\"value\":adjustmentOption.value}},[_vm._v(\"\\n \"+_vm._s(adjustmentOption.label)+\"\\n \")])}),0)]):_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.type),expression:\"type\"}],staticClass:\"text readonly\",attrs:{\"id\":slotProps.id,\"type\":\"text\",\"readonly\":\"\"},domProps:{\"value\":(_vm.type)},on:{\"input\":function($event){if($event.target.composing)return;_vm.type=$event.target.value}}})])]}}],null,false,457398335)}),_vm._v(\" \"),_c('field',{attrs:{\"label\":_vm.showLabels ? _vm.$options.filters.t('Name', 'commerce') : ''},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.name),expression:\"name\"}],staticClass:\"text\",class:{readonly: !_vm.isAllowedAdjustmentType},attrs:{\"id\":slotProps.id,\"type\":\"text\",\"readonly\":!_vm.isAllowedAdjustmentType},domProps:{\"value\":(_vm.name)},on:{\"input\":function($event){if($event.target.composing)return;_vm.name=$event.target.value}}})]}}],null,false,2145796130)}),_vm._v(\" \"),_c('field',{attrs:{\"label\":_vm.showLabels\n ? _vm.$options.filters.t('Description', 'commerce')\n : ''},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.description),expression:\"description\"}],staticClass:\"text\",class:{readonly: !_vm.isAllowedAdjustmentType},attrs:{\"id\":slotProps.id,\"type\":\"text\",\"readonly\":!_vm.isAllowedAdjustmentType},domProps:{\"value\":(_vm.description)},on:{\"input\":function($event){if($event.target.composing)return;_vm.description=$event.target.value}}})]}}],null,false,44145378)}),_vm._v(\" \"),_c('field',{class:{\n 'included-labels': _vm.showLabels,\n included: !_vm.showLabels,\n 'order-flex': true,\n 'align-center': true,\n },attrs:{\"label\":_vm.showLabels\n ? _vm.$options.filters.t('Included', 'commerce')\n : ''},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [(_vm.isAllowedAdjustmentType)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.included),expression:\"included\"}],staticClass:\"checkbox\",attrs:{\"id\":slotProps.id,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.included)?_vm._i(_vm.included,null)>-1:(_vm.included)},on:{\"change\":function($event){var $$a=_vm.included,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.included=$$a.concat([$$v]))}else{$$i>-1&&(_vm.included=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.included=$$c}}}}),_c('label',{attrs:{\"for\":slotProps.id}},[_vm._v(\" \")])]):_c('div',[_c('input',{attrs:{\"id\":slotProps.id,\"type\":\"hidden\"},domProps:{\"value\":_vm.included ? '1' : '0'}}),_c('label',{attrs:{\"for\":slotProps.id}},[_vm._v(\" \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.included),expression:\"included\"}],staticClass:\"checkbox readonly\",attrs:{\"id\":slotProps.id,\"type\":\"checkbox\",\"disabled\":true},domProps:{\"checked\":Array.isArray(_vm.included)?_vm._i(_vm.included,null)>-1:(_vm.included)},on:{\"change\":function($event){var $$a=_vm.included,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.included=$$a.concat([$$v]))}else{$$i>-1&&(_vm.included=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.included=$$c}}}}),_c('label',{attrs:{\"for\":slotProps.id}},[_vm._v(\" \")])])]}}],null,false,4102206510)}),_vm._v(\" \"),_c('field',{attrs:{\"label\":_vm.showLabels\n ? _vm.$options.filters.t('Amount', 'commerce')\n : '',\"required\":true,\"errors\":[\n ..._vm.getErrors(_vm.errorPrefix + _vm.adjustmentKey + '.amount'),\n ..._vm.getErrors(_vm.errorPrefix + _vm.adjustmentKey + '.included'),\n ]},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.amount),expression:\"amount\"}],staticClass:\"text\",class:{\n error: _vm.hasAmountErrors,\n readonly: !_vm.isAllowedAdjustmentType,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"placeholder\":_vm.amount,\"readonly\":!_vm.isAllowedAdjustmentType},domProps:{\"value\":(_vm.amount)},on:{\"input\":function($event){if($event.target.composing)return;_vm.amount=$event.target.value}}})]}}],null,false,2625685294)}),_vm._v(\" \"),_c('div',{staticClass:\"order-flex justify-center flex-grow\",class:{pt: _vm.showLabels}},[_c('btn-link',{attrs:{\"button-class\":\"btn-link btn-link--danger icon delete\"},on:{\"click\":function($event){return _vm.$emit('remove')}}})],1)],1)]:[_c('div',{staticClass:\"w-1/5\"},[_c('span',{staticClass:\"adjustment-type\"},[_vm._v(_vm._s(_vm.getTypeName(_vm.type)))])]),_vm._v(\" \"),_c('div',{staticClass:\"w-4/5 order-flex\"},[_c('div',{staticClass:\"w-2/3\"},[_vm._v(\"\\n \"+_vm._s(_vm.name)),(_vm.description)?_c('span',[_vm._v(\" - \"+_vm._s(_vm.description))]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"w-1/3 text-right\"},[(\n _vm.adjustment.included !== '0' &&\n _vm.adjustment.included !== false\n )?[_c('div',{staticClass:\"light\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('{amount} included','commerce', {\n amount: _vm.adjustment.amountAsCurrency,\n }))+\"\\n \")])]:[_vm._v(\"\\n \"+_vm._s(_vm.adjustment.amountAsCurrency)+\"\\n \")]],2)])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Adjustments.vue?vue&type=template&id=58859fac&\"\nimport script from \"./Adjustments.vue?vue&type=script&lang=js&\"\nexport * from \"./Adjustments.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Adjustments.vue?vue&type=style&index=0&id=58859fac&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"w-full\"},[_vm._l((_vm.adjustments),function(adjustment,key){return [_c('adjustment',{key:key,attrs:{\"show-labels\":key === 0 ? true : false,\"error-prefix\":_vm.errorPrefix,\"adjustment\":adjustment,\"adjustment-key\":key,\"recalculation-mode\":_vm.recalculationMode,\"editing\":_vm.editing},on:{\"update\":function($event){return _vm.$emit('updateAdjustment', {adjustment: $event, key})},\"remove\":function($event){return _vm.$emit('removeAdjustment', key)}}})]}),_vm._v(\" \"),(_vm.editing && _vm.recalculationMode === 'none')?[_c('div',{staticClass:\"adjustment-actions\"},[_c('btn-link',{attrs:{\"button-class\":\"btn add icon\"},on:{\"click\":function($event){return _vm.$emit('addAdjustment')}}},[_vm._v(_vm._s(_vm._f(\"t\")('Add an adjustment','commerce')))])],1)]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import { render, staticRenderFns } from \"./LineItemAdjustments.vue?vue&type=template&id=13f7ec02&\"\nimport script from \"./LineItemAdjustments.vue?vue&type=script&lang=js&\"\nexport * from \"./LineItemAdjustments.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.editing || _vm.lineItem.adjustments.length)?_c('order-block',{staticClass:\"order-flex\"},[_c('adjustments',{attrs:{\"editing\":_vm.editing,\"error-prefix\":_vm.errorPrefix,\"adjustments\":_vm.adjustments,\"recalculation-mode\":_vm.recalculationMode},on:{\"addAdjustment\":_vm.addAdjustment,\"updateAdjustment\":_vm.updateAdjustment,\"removeAdjustment\":_vm.removeAdjustment}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Lightswitch.vue?vue&type=template&id=b7c773ec&\"\nimport script from \"./Lightswitch.vue?vue&type=script&lang=js&\"\nexport * from \"./Lightswitch.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('button',_vm._b({ref:\"lightswitch\"},'button',_vm.attributes,false),[_vm._m(0),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.value),expression:\"value\"}],attrs:{\"type\":\"hidden\",\"name\":_vm.name},domProps:{\"value\":(_vm.value)},on:{\"input\":function($event){if($event.target.composing)return;_vm.value=$event.target.value}}})])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"lightswitch-container\"},[_c('div',{staticClass:\"handle\"})])\n}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItemProperty.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItemProperty.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./LineItemProperty.vue?vue&type=template&id=1e9c9d90&\"\nimport script from \"./LineItemProperty.vue?vue&type=script&lang=js&\"\nexport * from \"./LineItemProperty.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LineItemProperty.vue?vue&type=style&index=0&id=1e9c9d90&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"w-full order-edit-line-item-prop order-flex\"},[_c('field',{class:_vm.classes,attrs:{\"label\":_vm.fieldLabel,\"instructions\":_vm.instructions},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [[(_vm.editing)?[_c('lightswitch',{attrs:{\"name\":_vm.attribute,\"value\":_vm.property},on:{\"change\":_vm.handleChange}})]:(_vm.property)?[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Yes', 'commerce'))+\"\\n \")]:[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('No', 'commerce'))+\"\\n \")]]]}}])}),_vm._v(\" \"),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Snapshot.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Snapshot.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Snapshot.vue?vue&type=template&id=1728b39a&\"\nimport script from \"./Snapshot.vue?vue&type=script&lang=js&\"\nexport * from \"./Snapshot.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Snapshot.vue?vue&type=style&index=0&id=1728b39a&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('btn-link',{on:{\"click\":function($event){_vm.showSnapshot = !_vm.showSnapshot}}},[(!_vm.showSnapshot)?[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Snapshot','commerce'))+\" \"),_c('i',{attrs:{\"data-icon\":\"downangle\"}})]:[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Hide snapshot','commerce'))+\"\\n \"),_c('i',{attrs:{\"data-icon\":\"upangle\"}})]],2),_vm._v(\" \"),(_vm.showSnapshot)?[_c('div',{staticClass:\"snapshot\"},[_c('pre',[_c('code',[_vm._t(\"default\")],2)])])]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"v-select-btn btn\"},[_c('v-select',{ref:\"vSelect\",class:_vm.selectClass,attrs:{\"clearable\":_vm.clearable,\"clear-search-on-blur\":_vm.clearOnBlur,\"create-option\":_vm.createOption,\"components\":{OpenIndicator: _vm.OpenIndicator},\"disabled\":_vm.disabled,\"filterable\":_vm.filterable,\"filter-by\":_vm.filterBy,\"label\":_vm.label,\"options\":_vm.options,\"taggable\":_vm.taggable,\"value\":_vm.value,\"placeholder\":_vm.placeholder,\"searchInputQuerySelector\":_vm.searchInputQuerySelector,\"clearSearchOnSelect\":_vm.clearSearchOnSelect},on:{\"input\":function($event){return _vm.$emit('input', $event)},\"search\":_vm.onSearch,\"option:created\":_vm.onOptionCreated},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [_vm._t(\"option\",function(){return [_vm._v(_vm._s(option.name))]},{\"option\":option})]}},{key:\"spinner\",fn:function(spinner){return [_vm._t(\"spinner\",function(){return [(spinner.loading)?_c('div',{staticClass:\"spinner-wrapper\"},[_c('div',{staticClass:\"spinner\"})]):_vm._e()]},{\"spinner\":spinner})]}},{key:\"selected-option\",fn:function(option){return [_vm._t(\"selected-option\",function(){return [(option)?_c('div',{on:{\"click\":_vm.onOptionClick}},[_vm._v(\"\\n \"+_vm._s(option[_vm.label])+\"\\n \")]):_vm._e()]},{\"selectedOption\":option})]}},{key:\"search\",fn:function(search){return [_vm._t(\"search\",function(){return [_c('input',_vm._g(_vm._b({staticClass:\"vs__search\",attrs:{\"name\":_vm.searchInputName,\"type\":\"text\"}},'input',{\n ...search.attributes,\n ...{autocomplete: _vm.searchInputName},\n },false),_vm.getSearchEvents(search.events)))]},{\"search\":search})]}},{key:\"no-options\",fn:function(){return [_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t(\n 'Sorry, no matching options.',\n 'commerce'\n ))+\"\\n \")]},proxy:true}],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OpenIndicator.vue?vue&type=template&id=9bcdae26&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SelectInput.vue?vue&type=template&id=8a735c88&\"\nimport script from \"./SelectInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelectInput.vue?vue&type=style&index=0&id=8a735c88&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n {{\n lineItem.sku\n }}\n \n\n \n
\n \n
\n\n \n
\n {{\n 'Edit' | t('commerce')\n }}\n
\n\n \n
\n {{\n 'Snapshots' | t('commerce')\n }}\n
\n \n \n {{ 'Remove' | t('commerce') }}\n \n \n
\n
\n
    \n
  • \n
    \n \n \n \n \n \n \n \n
    \n \n \n \n
    \n \n
    \n
  • \n \n
\n
\n
\n \n \n
\n
\n
\n {{ lineItem.subtotalAsCurrency }}\n
\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n
\n {{ lineItem.totalAsCurrency }}\n
\n
\n
\n
\n \n \n
\n {{\n $options.filters.t('Cancel', 'commerce')\n }}\n {{\n $options.filters.t('Done', 'commerce')\n }}\n
\n \n\n
\n
\n
\n

{{ lineItem.description }}

\n

{{ 'Line Item' | t('commerce') }}

\n {{\n lineItem.snapshot\n }}\n
\n

\n {{ 'Adjustments' | t('commerce') }}\n

\n \n
\n

\n {{ adjustment.name\n }}\n - {{ adjustment.description }}\n

\n
\n {{ adjustment.type }}\n
\n {{\n adjustment.sourceSnapshot\n }}\n
\n
\n \n
\n
\n
\n {{\n $options.filters.t('Close', 'commerce')\n }}\n
\n
\n
\n
\n \n \n\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItem.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItems.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineItems.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./LineItem.vue?vue&type=template&id=48cd9035&\"\nimport script from \"./LineItem.vue?vue&type=script&lang=js&\"\nexport * from \"./LineItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LineItem.vue?vue&type=style&index=0&id=48cd9035&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"line-item\"},[_c('div',{staticClass:\"absolute line-item-bg\",class:{\n 'highlight-line-item': _vm.highlightLineItem,\n 'error-bg': _vm.hasLineItemErrors(_vm.lineItemKey),\n }}),_vm._v(\" \"),_c('div',{staticClass:\"relative\"},[_c('order-block',{staticClass:\"order-flex order-box-sizing\"},[_c('div',{staticClass:\"w-1/4\"},[(\n _vm.editing &&\n _vm.editMode &&\n _vm.lineItem.type &&\n _vm.lineItem.type.value === _vm.lineItemTypes.Custom.value\n )?_c('div',[_c('field',{attrs:{\"label\":_vm.$options.filters.t('Description', 'commerce')},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.description),expression:\"description\"}],staticClass:\"text\",class:{\n error: _vm.getErrors(\n 'lineItems.' +\n _vm.lineItemKey +\n '.description'\n ).length,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"10\"},domProps:{\"value\":(_vm.description)},on:{\"input\":function($event){if($event.target.composing)return;_vm.description=$event.target.value}}})]}}],null,false,106977694)})],1):_c('order-title',[(_vm.lineItem.purchasableCpEditUrl)?_c('a',{attrs:{\"href\":_vm.lineItem.purchasableCpEditUrl}},[_vm._v(\"\\n \"+_vm._s(_vm.lineItem.description)+\"\\n \")]):_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.lineItem.description)+\"\\n \")])]),_vm._v(\" \"),_c('div',{class:{\n 'mt-s':\n _vm.editing &&\n _vm.editMode &&\n _vm.lineItem.type &&\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value,\n }},[(\n _vm.editing &&\n _vm.editMode &&\n _vm.lineItem.type &&\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value\n )?[_c('field',{attrs:{\"label\":_vm.$options.filters.t('SKU', 'commerce')},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sku),expression:\"sku\"}],staticClass:\"text\",class:{\n error: _vm.getErrors(\n 'lineItems.' + _vm.lineItemKey + '.sku'\n ).length,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"4\"},domProps:{\"value\":(_vm.sku)},on:{\"input\":function($event){if($event.target.composing)return;_vm.sku=$event.target.value}}})]}}],null,false,3393044256)})]:_c('code',{staticClass:\"extralight\"},[_vm._v(_vm._s(_vm.lineItem.sku))])],2),_vm._v(\" \"),_c('div',{staticClass:\"my-1\"},[_c('line-item-status',{attrs:{\"line-item\":_vm.lineItem,\"editing\":_vm.editing && _vm.editMode},on:{\"change\":_vm.updateLineItemStatusId}})],1),_vm._v(\" \"),(_vm.canEdit)?_c('div',[(!_vm.editMode)?_c('btn-link',{on:{\"click\":function($event){return _vm.enableEditMode()}}},[_vm._v(_vm._s(_vm._f(\"t\")('Edit','commerce')))]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',[_c('btn-link',{on:{\"click\":function($event){return _vm.openSnapshotModal()}}},[_vm._v(_vm._s(_vm._f(\"t\")('Snapshots','commerce')))])],1),_vm._v(\" \"),(\n _vm.canEdit &&\n (_vm.totalCommittedStock === 0 ||\n _vm.lineItem.fulfilledTotalQuantity < 1)\n )?_c('div',[_c('btn-link',{attrs:{\"button-class\":\"btn-link btn-link--danger\"},on:{\"click\":_vm.removeLineItem}},[_vm._v(_vm._s(_vm._f(\"t\")('Remove','commerce')))])],1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"w-3/4\"},[_c('div',{staticClass:\"order-flex pb\"},[_c('ul',{staticClass:\"line-item-section line-item-price\"},[_c('li',{staticClass:\"order-flex order-flex-wrap\"},[_c('div',{staticClass:\"order-flex\"},[(\n _vm.editing &&\n _vm.editMode &&\n (_vm.recalculationMode === 'none' ||\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value)\n )?[_c('field',{attrs:{\"label\":_vm.$options.filters.t(\n 'Promotional Price',\n 'commerce'\n )},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.promotionalPrice),expression:\"promotionalPrice\"}],ref:\"promotionalPrice\",staticClass:\"text\",class:{\n error: _vm.getErrors(\n 'lineItems.' +\n _vm.lineItemKey +\n '.promotionalPrice'\n ).length,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"10\"},domProps:{\"value\":(_vm.promotionalPrice)},on:{\"input\":function($event){if($event.target.composing)return;_vm.promotionalPrice=$event.target.value}}})]}}],null,false,2878233695)})]:[_c('label',{staticClass:\"light\",attrs:{\"for\":\"salePrice\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Sale Price','commerce')))]),_vm._v(\" \"),_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.lineItem.salePriceAsCurrency)+\"\\n \")])],_vm._v(\" \"),(\n _vm.editing &&\n _vm.editMode &&\n (_vm.recalculationMode === 'none' ||\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value)\n )?[_c('div',[_c('field',{attrs:{\"label\":_vm.$options.filters.t(\n 'Price',\n 'commerce'\n )},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.price),expression:\"price\"}],ref:\"price\",staticClass:\"text\",class:{\n error: _vm.getErrors(\n 'lineItems.' +\n _vm.lineItemKey +\n '.price'\n ).length,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"10\"},domProps:{\"value\":(_vm.price)},on:{\"input\":function($event){if($event.target.composing)return;_vm.price=$event.target.value}}})]}}],null,false,3265702783)})],1)]:_vm._e()],2)]),_vm._v(\" \"),(_vm.lineItem.onPromotion)?[_c('li',[_c('span',{staticClass:\"light\"},[_vm._v(_vm._s(_vm._f(\"t\")('Original Price','commerce')))]),_vm._v(\" \"),_c('del',[_vm._v(_vm._s(_vm.lineItem.priceAsCurrency))])]),_vm._v(\" \"),_c('li',[_c('span',{staticClass:\"light\"},[_vm._v(_vm._s(_vm._f(\"t\")('Promotional Amount','commerce')))]),_vm._v(\"\\n \"+_vm._s(_vm.lineItem.promotionalAmountAsCurrency)+\"\\n \")])]:_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"line-item-section\"},[_c('div',{staticClass:\"order-flex\"},[(_vm.editing && _vm.editMode)?[_c('field',{attrs:{\"label\":_vm.$options.filters.t(\n 'Quantity',\n 'commerce'\n )},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.qty),expression:\"qty\"}],staticClass:\"text\",class:{\n error: _vm.getErrors(\n 'lineItems.' +\n _vm.lineItemKey +\n '.qty'\n ).length,\n },attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"3\"},domProps:{\"value\":(_vm.qty)},on:{\"input\":function($event){if($event.target.composing)return;_vm.qty=$event.target.value}}})]}}],null,false,2189795926)})]:[_c('span',[_vm._v(_vm._s(_vm.lineItem.qty))])]],2)]),_vm._v(\" \"),_c('div',{staticClass:\"order-flex-grow text-right\"},[_vm._v(\"\\n \"+_vm._s(_vm.lineItem.subtotalAsCurrency)+\"\\n \")])]),_vm._v(\" \"),_c('div',[(\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value\n )?_c('order-block',{staticClass:\"order-flex\"},[_c('line-item-property',{attrs:{\"editing\":_vm.editing && _vm.editMode,\"line-item\":_vm.lineItem,\"attribute\":'hasFreeShipping',\"label\":_vm.$options.filters.t(\n 'Has Free Shipping',\n 'commerce'\n ),\"classes\":{'order-flex': true}},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}})],1):_vm._e(),_vm._v(\" \"),(\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value\n )?_c('order-block',{staticClass:\"order-flex\"},[_c('line-item-property',{attrs:{\"editing\":_vm.editing && _vm.editMode,\"line-item\":_vm.lineItem,\"attribute\":'isShippable',\"label\":_vm.$options.filters.t(\n 'Is Shippable',\n 'commerce'\n ),\"classes\":\"order-flex line-item-no-margin\"},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}},[_c('field',{staticStyle:{\"margin-top\":\"0\",\"margin-left\":\"auto\",\"width\":\"60%\"},attrs:{\"label\":_vm.fieldLabel(\n _vm.$options.filters.t(\n 'Shipping Category',\n 'commerce'\n )\n ),\"classes\":\"order-flex\",\"input-class\":\"flex-grow\"}},[(_vm.editing && _vm.editMode)?[_c('select-input',{attrs:{\"label\":\"name\",\"options\":_vm.shippingCategoryOptions,\"filterable\":true,\"placeholder\":_vm.shippingCategory},model:{value:(_vm.shippingCategoryId),callback:function ($$v) {_vm.shippingCategoryId=$$v},expression:\"shippingCategoryId\"}})]:[_vm._v(\"\\n \"+_vm._s(_vm.shippingCategory)+\"\\n \")]],2)],1)],1):_vm._e(),_vm._v(\" \"),(\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value\n )?_c('order-block',{staticClass:\"order-flex\"},[_c('line-item-property',{attrs:{\"editing\":_vm.editing && _vm.editMode,\"line-item\":_vm.lineItem,\"attribute\":'isPromotable',\"label\":_vm.$options.filters.t(\n 'Is Promotable',\n 'commerce'\n ),\"classes\":{'order-flex': true}},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}})],1):_vm._e(),_vm._v(\" \"),(\n _vm.lineItem.type.value ===\n _vm.lineItemTypes.Custom.value\n )?_c('order-block',{staticClass:\"order-flex\"},[_c('line-item-property',{attrs:{\"editing\":_vm.editing && _vm.editMode,\"line-item\":_vm.lineItem,\"attribute\":'isTaxable',\"label\":_vm.$options.filters.t('Is Taxable', 'commerce'),\"classes\":\"order-flex line-item-no-margin\"},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}},[_c('field',{staticStyle:{\"margin-top\":\"0\",\"margin-left\":\"auto\",\"width\":\"60%\"},attrs:{\"label\":_vm.fieldLabel(\n _vm.$options.filters.t(\n 'Tax Category',\n 'commerce'\n )\n ),\"classes\":\"order-flex\",\"input-class\":\"flex-grow\"}},[(_vm.editing && _vm.editMode)?[_c('select-input',{attrs:{\"label\":\"name\",\"options\":_vm.taxCategoryOptions,\"filterable\":true,\"placeholder\":_vm.taxCategory},model:{value:(_vm.taxCategoryId),callback:function ($$v) {_vm.taxCategoryId=$$v},expression:\"taxCategoryId\"}})]:[_vm._v(\"\\n \"+_vm._s(_vm.taxCategory)+\"\\n \")]],2)],1)],1):_vm._e(),_vm._v(\" \"),_c('line-item-adjustments',{attrs:{\"order-id\":_vm.orderId,\"line-item\":_vm.lineItem,\"editing\":_vm.editing && _vm.editMode,\"recalculation-mode\":_vm.recalculationMode,\"errorPrefix\":'lineItems.' + _vm.lineItemKey + '.adjustments.'},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}}),_vm._v(\" \"),_c('line-item-options',{attrs:{\"line-item\":_vm.lineItem,\"editing\":_vm.editing && _vm.editMode},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}}),_vm._v(\" \"),_c('line-item-notes',{attrs:{\"line-item\":_vm.lineItem,\"editing\":_vm.editing && _vm.editMode},on:{\"updateLineItem\":function($event){return _vm.$emit('updateLineItem', $event)}}}),_vm._v(\" \"),_c('order-block',{staticClass:\"text-right\"},[_c('div',[_c('strong',[_vm._v(_vm._s(_vm.lineItem.totalAsCurrency))])])])],1)])]),_vm._v(\" \"),(_vm.editing && _vm.editMode)?_c('div',{staticClass:\"line-item-buttons pb text-right\"},[_c('div',{staticClass:\"buttons right\"},[_c('btn-link',{attrs:{\"button-class\":\"btn\"},on:{\"click\":_vm.cancelEdit}},[_vm._v(_vm._s(_vm.$options.filters.t('Cancel', 'commerce')))]),_vm._v(\" \"),_c('btn-link',{attrs:{\"button-class\":\"btn secondary\"},on:{\"click\":_vm.applyEdit}},[_vm._v(_vm._s(_vm.$options.filters.t('Done', 'commerce')))])],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\"},[_c('div',{ref:\"snapshots\",staticClass:\"order-edit-modal modal fitted\"},[_c('div',{staticClass:\"body\"},[_c('h2',[_vm._v(_vm._s(_vm.lineItem.description))]),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm._f(\"t\")('Line Item','commerce')))]),_vm._v(\" \"),_c('snapshot',{attrs:{\"show\":true}},[_vm._v(_vm._s(_vm.lineItem.snapshot))]),_vm._v(\" \"),_c('hr'),_vm._v(\" \"),(_vm.lineItem.adjustments.length)?_c('h3',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Adjustments','commerce'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.lineItem.adjustments),function(adjustment,key){return [_c('div',{key:key},[_c('h4',{staticClass:\"m-0\"},[_vm._v(\"\\n \"+_vm._s(adjustment.name)),(adjustment.description)?_c('span',[_vm._v(\"\\n - \"+_vm._s(adjustment.description))]):_vm._e()]),_vm._v(\" \"),_c('h5',{staticClass:\"adjustment-type mt-tiny\"},[_vm._v(\"\\n \"+_vm._s(adjustment.type)+\"\\n \")]),_vm._v(\" \"),_c('snapshot',{attrs:{\"show\":true}},[_vm._v(_vm._s(adjustment.sourceSnapshot))]),_vm._v(\" \"),_c('hr')],1)]})],2),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('div',{staticClass:\"buttons right\"},[_c('btn-link',{attrs:{\"button-class\":\"btn\"},on:{\"click\":function($event){return _vm.closeSnapshotModal()}}},[_vm._v(_vm._s(_vm.$options.filters.t('Close', 'commerce')))])],1)])])])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./LineItems.vue?vue&type=template&id=714e330f&\"\nimport script from \"./LineItems.vue?vue&type=script&lang=js&\"\nexport * from \"./LineItems.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LineItems.vue?vue&type=style&index=0&id=714e330f&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.lineItems.length > 0)?_c('div',{staticClass:\"order-flex order-box-sizing\"},[_c('div',{staticClass:\"line-items-heading line-items-heading--details orderedit-border-color\"},[_c('h4',{staticClass:\"extralight\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Item', 'commerce'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"line-items-heading line-items-heading--price orderedit-border-color\"},[_c('h4',{staticClass:\"extralight\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Unit Price', 'commerce'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"line-items-heading line-items-heading--quantity orderedit-border-color\"},[_c('h4',{staticClass:\"extralight\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Quantity', 'commerce'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"line-items-heading line-items-heading--total orderedit-border-color text-right order-flex-grow\"},[_c('h4',{staticClass:\"extralight\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Total', 'commerce'))+\"\\n \")])])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.lineItems),function(lineItem,lineItemKey){return [_c('line-item',{key:lineItem.uid,attrs:{\"recalculation-mode\":_vm.recalculationMode,\"line-item\":lineItem,\"line-item-key\":lineItemKey,\"editing\":_vm.editing},on:{\"updateLineItem\":function($event){return _vm.updateLineItem($event, lineItemKey)},\"removeLineItem\":function($event){return _vm.removeLineItem(lineItemKey)}}})]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var __WEBPACK_NAMESPACE_OBJECT__ = axios;","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./Vuetable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./Vuetable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Vuetable.vue?vue&type=template&id=5bfa05b0&scoped=true&\"\nimport script from \"./Vuetable.vue?vue&type=script&lang=js&\"\nexport * from \"./Vuetable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Vuetable.vue?vue&type=style&index=0&id=5bfa05b0&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bfa05b0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isFixedHeader)?_c('div',[_c('div',{staticClass:\"vuetable-head-wrapper\"},[_c('table',{class:['vuetable', _vm.css.tableClass, _vm.css.tableHeaderClass]},[_c('thead',[_c('tr',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__checkbox')?_c('th',{key:fieldIndex,class:['vuetable-th-checkbox-'+_vm.trackBy, field.titleClass],style:({width: field.width})},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checkCheckboxesState(field.name)},on:{\"change\":function($event){return _vm.toggleAllCheckboxes(field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__component')?_c('th',{key:fieldIndex,class:['vuetable-th-component-'+_vm.trackBy, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__slot')?_c('th',{key:fieldIndex,class:['vuetable-th-slot-'+_vm.extractArgs(field.name), field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__sequence')?_c('th',{key:fieldIndex,class:['vuetable-th-sequence', field.titleClass || ''],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e(),_vm._v(\" \"),(_vm.notIn(_vm.extractName(field.name), ['__sequence', '__checkbox', '__component', '__slot']))?_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass || ''],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e()]:[_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),attrs:{\"id\":'_' + field.name},domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}})]]:_vm._e()]}),_vm._v(\" \"),(_vm.scrollVisible)?_c('th',{staticClass:\"vuetable-gutter-col\",style:({width: _vm.scrollBarWidth})}):_vm._e()],2)])])]),_vm._v(\" \"),_c('div',{staticClass:\"vuetable-body-wrapper\",style:({height: _vm.tableHeight})},[_c('table',{class:['vuetable', _vm.css.tableClass, _vm.css.tableBodyClass]},[_c('colgroup',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[_c('col',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass],style:({width: field.width}),attrs:{\"id\":'_col_' + field.name}})]:_vm._e()]})],2),_vm._v(\" \"),_c('tbody',{staticClass:\"vuetable-body\"},[_vm._l((_vm.tableData),function(item,itemIndex){return [_c('tr',{key:itemIndex,class:_vm.onRowClass(item, itemIndex),attrs:{\"item-index\":itemIndex,\"render\":_vm.onRowChanged(item)},on:{\"click\":function($event){return _vm.onRowClicked(item, $event)},\"dblclick\":function($event){return _vm.onRowDoubleClicked(item, $event)}}},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__sequence')?_c('td',{key:fieldIndex,class:['vuetable-sequence', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderSequence(itemIndex))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__handle')?_c('td',{key:fieldIndex,class:['vuetable-handle', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderIconTag(['handle-icon', _vm.css.handleIcon]))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__checkbox')?_c('td',{key:fieldIndex,class:['vuetable-checkboxes', field.dataClass]},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.rowSelected(item, field.name)},on:{\"change\":function($event){return _vm.toggleCheckbox(item, field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__component')?_c('td',{key:fieldIndex,class:['vuetable-component', field.dataClass]},[_c(_vm.extractArgs(field.name),{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex,\"row-field\":field.sortField}})],1):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__slot')?_c('td',{key:fieldIndex,class:['vuetable-slot', field.dataClass]},[_vm._t(_vm.extractArgs(field.name),null,{\"rowData\":item,\"rowIndex\":itemIndex,\"rowField\":field.sortField})],2):_vm._e()]:[_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.renderNormalField(field, item))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}})]]:_vm._e()]})],2),_vm._v(\" \"),(_vm.useDetailRow)?[_c('transition',{key:itemIndex,attrs:{\"name\":_vm.detailRowTransition}},[(_vm.isVisibleDetailRow(item[_vm.trackBy]))?_c('tr',{class:[_vm.css.detailRowClass],on:{\"click\":function($event){return _vm.onDetailRowClick(item, $event)}}},[_c('td',{attrs:{\"colspan\":_vm.countVisibleFields}},[_c(_vm.detailRowComponent,{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex}})],1)]):_vm._e()])]:_vm._e()]}),_vm._v(\" \"),(_vm.displayEmptyDataRow)?[_c('tr',[_c('td',{staticClass:\"vuetable-empty-result\",attrs:{\"colspan\":_vm.countVisibleFields},domProps:{\"innerHTML\":_vm._s(_vm.noDataTemplate)}})])]:_vm._e(),_vm._v(\" \"),(_vm.lessThanMinRows)?_vm._l((_vm.blankRows),function(i){return _c('tr',{key:i,staticClass:\"blank-row\"},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?_c('td',{key:fieldIndex},[_vm._v(\" \")]):_vm._e()]})],2)}):_vm._e()],2)])])]):_c('table',{class:['vuetable', _vm.css.tableClass]},[_c('thead',[_c('tr',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__checkbox')?_c('th',{key:fieldIndex,class:['vuetable-th-checkbox-'+_vm.trackBy, field.titleClass],style:({width: field.width})},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checkCheckboxesState(field.name)},on:{\"change\":function($event){return _vm.toggleAllCheckboxes(field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__component')?_c('th',{key:fieldIndex,class:['vuetable-th-component-'+_vm.trackBy, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__slot')?_c('th',{key:fieldIndex,class:['vuetable-th-slot-'+_vm.extractArgs(field.name), field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__sequence')?_c('th',{key:fieldIndex,class:['vuetable-th-sequence', field.titleClass || '', _vm.sortClass(field)],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e(),_vm._v(\" \"),(_vm.notIn(_vm.extractName(field.name), ['__sequence', '__checkbox', '__component', '__slot']))?_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass || '', _vm.sortClass(field)],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e()]:[_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),attrs:{\"id\":'_' + field.name},domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}})]]:_vm._e()]})],2)]),_vm._v(\" \"),_c('tbody',{staticClass:\"vuetable-body\"},[_vm._l((_vm.tableData),function(item,itemIndex){return [_c('tr',{key:itemIndex,class:_vm.onRowClass(item, itemIndex),attrs:{\"item-index\":itemIndex,\"render\":_vm.onRowChanged(item)},on:{\"dblclick\":function($event){return _vm.onRowDoubleClicked(item, $event)},\"click\":function($event){return _vm.onRowClicked(item, $event)}}},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__sequence')?_c('td',{key:fieldIndex,class:['vuetable-sequence', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderSequence(itemIndex))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__handle')?_c('td',{key:fieldIndex,class:['vuetable-handle', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderIconTag(['handle-icon', _vm.css.handleIcon]))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__checkbox')?_c('td',{key:fieldIndex,class:['vuetable-checkboxes', field.dataClass]},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.rowSelected(item, field.name)},on:{\"change\":function($event){return _vm.toggleCheckbox(item, field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__component')?_c('td',{key:fieldIndex,class:['vuetable-component', field.dataClass]},[_c(_vm.extractArgs(field.name),{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex,\"row-field\":field.sortField}})],1):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__slot')?_c('td',{key:fieldIndex,class:['vuetable-slot', field.dataClass]},[_vm._t(_vm.extractArgs(field.name),null,{\"rowData\":item,\"rowIndex\":itemIndex,\"rowField\":field.sortField})],2):_vm._e()]:[(_vm.hasCallback(field))?_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.callCallback(field, item))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}}):_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.getObjectValue(item, field.name, ''))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}})]]:_vm._e()]})],2),_vm._v(\" \"),(_vm.useDetailRow)?[_c('transition',{key:itemIndex,attrs:{\"name\":_vm.detailRowTransition}},[(_vm.isVisibleDetailRow(item[_vm.trackBy]))?_c('tr',{class:[_vm.css.detailRowClass],on:{\"click\":function($event){return _vm.onDetailRowClick(item, $event)}}},[_c('td',{attrs:{\"colspan\":_vm.countVisibleFields}},[_c(_vm.detailRowComponent,{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex}})],1)]):_vm._e()])]:_vm._e()]}),_vm._v(\" \"),(_vm.displayEmptyDataRow)?[_c('tr',[_c('td',{staticClass:\"vuetable-empty-result\",attrs:{\"colspan\":_vm.countVisibleFields},domProps:{\"innerHTML\":_vm._s(_vm.noDataTemplate)}})])]:_vm._e(),_vm._v(\" \"),(_vm.lessThanMinRows)?_vm._l((_vm.blankRows),function(i){return _c('tr',{key:i,staticClass:\"blank-row\"},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?_c('td',{key:fieldIndex},[_vm._v(\" \")]):_vm._e()]})],2)}):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../vue-loader/lib/index.js??vue-loader-options!./AdminTablePagination.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../vue-loader/lib/index.js??vue-loader-options!./AdminTablePagination.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","var render, staticRenderFns\nimport script from \"./VuetablePaginationMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./VuetablePaginationMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n","import { render, staticRenderFns } from \"./AdminTablePagination.vue?vue&type=template&id=70eca74e&\"\nimport script from \"./AdminTablePagination.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTablePagination.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTablePagination.vue?vue&type=style&index=0&id=70eca74e&prod&land=scss&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.tablePagination)?_c('div',{staticClass:\"vue-admin-table-pagination flex pagination\"},[_c('div',{staticClass:\"page-link prev-page\",class:[_vm.isOnFirstPage ? 'disabled' : ''],attrs:{\"title\":\"Previous Page\"},on:{\"click\":function($event){return _vm.loadPage('prev')}}}),_vm._v(\" \"),_c('div',{staticClass:\"page-link next-page\",class:[_vm.isOnLastPage ? 'disabled' : ''],attrs:{\"title\":\"Next Page\"},on:{\"click\":function($event){return _vm.loadPage('next')}}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.tablePagination),expression:\"tablePagination\"}],staticClass:\"page-info\"},[_vm._v(_vm._s(_vm.paginationLabel))])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableDeleteButton.vue?vue&type=template&id=61965297&scoped=true&\"\nimport script from \"./AdminTableDeleteButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableDeleteButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"61965297\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"delete icon\",class:{disabled: _vm.disabled},attrs:{\"title\":_vm._f(\"t\")('Delete','app'),\"role\":\"button\",\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleClick.apply(null, arguments)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../vue-loader/lib/index.js??vue-loader-options!./AdminTableCheckbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../vue-loader/lib/index.js??vue-loader-options!./AdminTableCheckbox.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./AdminTableCheckbox.vue?vue&type=template&id=5f665b8c&scoped=true&\"\nimport script from \"./AdminTableCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableCheckbox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTableCheckbox.vue?vue&type=style&index=0&id=5f665b8c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f665b8c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checkbox\",class:{\n checked: _vm.isChecked,\n 'table-disabled-checkbox': !_vm.status,\n },attrs:{\"title\":_vm.title},on:{\"click\":function($event){$event.preventDefault();return _vm.handleClick.apply(null, arguments)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableActionButton.vue?vue&type=template&id=99b1b51e&scoped=true&\"\nimport script from \"./AdminTableActionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableActionButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"99b1b51e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"form\",attrs:{\"method\":\"post\"}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.tokenName},domProps:{\"value\":_vm.tokenValue}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"action\"},domProps:{\"value\":_vm.action}}),_vm._v(\" \"),(_vm.param)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.param},domProps:{\"value\":_vm.value}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.ids),function(id,index){return _c('input',{key:index,attrs:{\"type\":\"hidden\",\"name\":\"ids[]\"},domProps:{\"value\":id}})}),_vm._v(\" \"),_c(_vm.isMenuButton ? 'div' : 'button',_vm._g({ref:\"button\",tag:\"component\",staticClass:\"btn\",class:{\n menubtn: _vm.isMenuButton,\n error: _vm.error,\n disabled: !_vm.enabled || _vm.buttonDisabled,\n },attrs:{\"data-icon\":_vm.icon,\"disabled\":_vm.buttonDisabled,\"type\":_vm.enabled && !_vm.isMenuButton && !_vm.ajax ? 'submit' : null}},\n _vm.enabled && !_vm.isMenuButton && _vm.ajax\n ? {click: _vm.handleClick(_vm.param, _vm.value, _vm.action, _vm.ajax)}\n : {}\n ),[_vm._v(_vm._s(_vm.label))]),_vm._v(\" \"),(_vm.isMenuButton)?_c('div',{staticClass:\"menu\"},[_vm._l((_vm.actionsList),function(actList,ind){return [_c('ul',{key:ind,staticClass:\"padded\"},_vm._l((actList),function(act,index){return _c('li',{key:index},[_c('a',{class:{\n error: act.error !== undefined && act.error,\n disabled:\n act.allowMultiple !== undefined &&\n !act.allowMultiple &&\n _vm.hasMultipleSelected,\n },attrs:{\"href\":\"#\",\"data-param\":act.param,\"data-value\":act.value,\"data-ajax\":act.ajax},on:{\"click\":function($event){$event.preventDefault();!(\n act.allowMultiple !== undefined &&\n !act.allowMultiple &&\n _vm.hasMultipleSelected\n )\n ? _vm.handleClick(act.param, act.value, act.action, act.ajax)\n : null}}},[(act.status)?_c('span',{class:'status ' + act.status}):_vm._e(),_vm._v(_vm._s(act.label)+\"\\n \")])])}),0),_vm._v(\" \"),(\n _vm.actionsList.length > 1 && ind != _vm.actionsList.length - 1 && ind != 0\n )?_c('hr',{key:ind}):_vm._e()]})],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../vue-loader/lib/index.js??vue-loader-options!./AdminTableDetailRow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../vue-loader/lib/index.js??vue-loader-options!./AdminTableDetailRow.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./AdminTableDetailRow.vue?vue&type=template&id=9db97adc&\"\nimport script from \"./AdminTableDetailRow.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableDetailRow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTableDetailRow.vue?vue&type=style&index=0&id=9db97adc&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(\n _vm.rowData.detail.content &&\n (!_vm.rowData.detail.showAsList || _vm.rowData.detail.showAsList === undefined)\n )?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.rowData.detail.content)}}):_vm._e(),_vm._v(\" \"),(_vm.rowData.detail.content && _vm.rowData.detail.showAsList)?_c('div',_vm._l((_vm.listKeys),function(key){return _c('div',{key:key,staticClass:\"order-flex detail-list\",class:{'detail-list-bg': _vm.index % 2}},[_c('div',{staticClass:\"detail-list-key\"},[_vm._v(_vm._s(key)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"detail-list-value\"},[_vm._v(_vm._s(_vm.list[key]))])])}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableButton.vue?vue&type=template&id=0ae468ca&scoped=true&\"\nimport script from \"./AdminTableButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0ae468ca\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{ref:\"button\",staticClass:\"btn\",class:_vm.buttonClass,attrs:{\"href\":_vm.linkHref,\"data-icon\":_vm.icon},on:{\"click\":_vm.handleClick}},[_vm._v(_vm._s(_vm.label))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableCopyTextButton.vue?vue&type=template&id=2e517d20&scoped=true&\"\nimport script from \"./AdminTableCopyTextButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableCopyTextButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e517d20\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**!\n * Sortable 1.15.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","\n\n\n\n","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=1391d88f&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=1391d88f&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"vue-admin-table\",class:{'vue-admin-table-padded': _vm.padded},attrs:{\"id\":_vm.tableId}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showToolbar),expression:\"showToolbar\"}],staticClass:\"toolbar\"},[_c('div',{staticClass:\"flex flex-nowrap\"},[_vm._l((_vm.actions),function(action,index){return _c('div',{key:index},[_c('admin-table-action-button',{attrs:{\"label\":action.label,\"icon\":action.icon,\"action\":action.action,\"actions\":action.actions,\"allow-multiple\":action.allowMultiple,\"ids\":_vm.checks,\"enabled\":_vm.checks.length ? true : false,\"error\":action.error,\"ajax\":action.ajax},on:{\"reload\":_vm.reload}})],1)}),_vm._v(\" \"),(_vm.search && !_vm.tableData.length)?_c('div',{staticClass:\"flex-grow texticon search icon clearable\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],staticClass:\"text fullwidth\",attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"placeholder\":_vm.searchPlaceholderText},domProps:{\"value\":(_vm.searchTerm)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.searchTerm=$event.target.value},_vm.handleSearch]}}),_vm._v(\" \"),_c('div',{staticClass:\"clear hidden\",attrs:{\"title\":_vm.searchClearTitle}})]):_vm._e(),_vm._v(\" \"),(_vm.buttons && _vm.buttons.length)?_c('div',{staticClass:\"vue-admin-table-buttons\"},[_c('div',{staticClass:\"flex flex-nowrap\"},_vm._l((_vm.buttons),function(button,index){return _c('div',{key:index},[_c('admin-table-button',{attrs:{\"label\":button.label,\"icon\":button.icon,\"href\":button.href,\"btn-class\":button.class,\"enabled\":_vm.isLoading\n ? false\n : button.enabled != undefined\n ? button.enabled\n : true}})],1)}),0)]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{class:{'content-pane': _vm.fullPage}},[(this.isEmpty)?_c('div',{staticClass:\"zilch\"},[_c('p',[_vm._v(_vm._s(_vm.emptyMessage))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"tableview\",class:{loading: _vm.isLoading, hidden: this.isEmpty}},[_c('div',{class:{'vue-admin-tablepane': true, tablepane: _vm.fullPane}},[_c('vuetable',{ref:\"vuetable\",attrs:{\"append-params\":_vm.appendParams,\"api-mode\":_vm.apiUrl ? true : false,\"api-url\":_vm.apiUrl,\"css\":_vm.tableCss,\"data\":_vm.tableData,\"detail-row-component\":_vm.detailRowComponent,\"fields\":_vm.fields,\"per-page\":_vm.perPage,\"pagination-path\":\"pagination\"},on:{\"vuetable:loaded\":_vm.init,\"vuetable:loading\":_vm.loading,\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.onLoadSuccess},scopedSlots:_vm._u([{key:\"checkbox\",fn:function(props){return [_c('admin-table-checkbox',{attrs:{\"id\":props.rowData.id,\"checks\":_vm.checks,\"status\":_vm.checkboxStatus(props.rowData)},on:{\"addCheck\":_vm.addCheck,\"removeCheck\":_vm.removeCheck}})]}},{key:\"title\",fn:function(props){return [(props.rowData.status !== undefined)?_c('span',{staticClass:\"status\",class:{enabled: props.rowData.status}}):_vm._e(),_vm._v(\" \"),(props.rowData.url)?_c('a',{class:{'cell-bold': props.rowData.status === undefined},attrs:{\"href\":props.rowData.url}},[_vm._v(_vm._s(props.rowData.title))]):_c('span',{class:{'cell-bold': props.rowData.status === undefined}},[_vm._v(_vm._s(props.rowData.title))])]}},{key:\"handle\",fn:function(props){return [_c('admin-table-copy-text-button',{key:props.rowData.id,attrs:{\"value\":props.rowData.handle}})]}},{key:\"menu\",fn:function(props){return [(props.rowData.menu.showItems)?[_c('a',{attrs:{\"href\":props.rowData.menu.url}},[_vm._v(_vm._s(props.rowData.menu.label)+\" (\"+_vm._s(props.rowData.menu.items.length)+\")\")]),_vm._v(\" \"),_c('a',{staticClass:\"menubtn\",attrs:{\"title\":props.rowData.menu.label}}),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',_vm._l((props.rowData.menu.items),function(item,index){return _c('li',{key:index},[_c('a',{attrs:{\"href\":item.url}},[_vm._v(_vm._s(item.label))])])}),0)])]:[_c('a',{attrs:{\"href\":props.rowData.menu.url}},[_vm._v(_vm._s(props.rowData.menu.label))])]]}},{key:\"detail\",fn:function(props){return [(\n props.rowData.detail.content && props.rowData.detail.handle\n )?_c('div',{staticClass:\"detail-cursor-pointer\",domProps:{\"innerHTML\":_vm._s(props.rowData.detail.handle)},on:{\"click\":function($event){return _vm.handleDetailRow(props.rowData.id)}}}):_vm._e(),_vm._v(\" \"),(\n props.rowData.detail.content &&\n (!props.rowData.detail.handle ||\n props.rowData.detail.handle == undefined) &&\n (Object.keys(props.rowData.detail.content).length ||\n props.rowData.detail.content.length)\n )?_c('div',{staticClass:\"detail-cursor-pointer\",attrs:{\"data-icon\":\"info\",\"title\":props.rowData.detail.title},on:{\"click\":function($event){return _vm.handleDetailRow(props.rowData.id)}}}):_vm._e()]}},{key:\"reorder\",fn:function(props){return [_c('i',{staticClass:\"move icon vue-table-move-handle\",class:{disabled: !_vm.canReorder},attrs:{\"data-id\":props.rowData.id}})]}},{key:\"delete\",fn:function(props){return [(\n props.rowData._showDelete == undefined ||\n props.rowData._showDelete == true\n )?_c('admin-table-delete-button',{attrs:{\"id\":props.rowData.id,\"name\":props.rowData.title,\"before\":_vm.beforeDelete,\"success-message\":_vm.deleteSuccessMessage,\"confirmation-message\":_vm.deleteConfirmationMessage,\"fail-message\":_vm.deleteFailMessage,\"action-url\":_vm.deleteAction,\"disabled\":!_vm.canDelete},on:{\"loading\":function($event){return _vm.loading()},\"finishloading\":function($event){return _vm.loading(false)},\"reload\":function($event){return _vm.remove(props.rowIndex, props.rowData.id)}}}):_vm._e()]}}])})],1),_vm._v(\" \"),_c('admin-table-pagination',{ref:\"pagination\",attrs:{\"itemLabels\":_vm.itemLabels},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddLineItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddLineItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AddLineItem.vue?vue&type=template&id=681cf890&\"\nimport script from \"./AddLineItem.vue?vue&type=script&lang=js&\"\nexport * from \"./AddLineItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AddLineItem.vue?vue&type=style&index=0&id=681cf890&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(!_vm.showForm)?[(_vm.lineItems.length > 0)?[_c('div',{staticClass:\"text-left\"},[_c('div',{staticClass:\"flex\"},[_c('btn-link',{attrs:{\"button-class\":\"btn icon add\"},on:{\"click\":function($event){_vm.showForm = true}}},[_vm._v(_vm._s(_vm._f(\"t\")('Add a line item','commerce')))]),_vm._v(\" \"),_c('btn-link',{attrs:{\"button-class\":\"btn icon add\"},on:{\"click\":_vm.addLineItem}},[_vm._v(_vm._s(_vm._f(\"t\")('Add a custom line item','commerce')))])],1)])]:[_c('div',{staticClass:\"starter\"},[_c('div',{attrs:{\"data-icon\":\"info\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm._f(\"t\")('Your order is empty','commerce')))]),_vm._v(\" \"),_c('div',{staticClass:\"flex\"},[_c('btn-link',{attrs:{\"button-class\":\"btn icon add\"},on:{\"click\":function($event){_vm.showForm = true}}},[_vm._v(_vm._s(_vm._f(\"t\")('Add a line item','commerce')))]),_vm._v(\" \"),_c('btn-link',{attrs:{\"button-class\":\"btn icon add\"},on:{\"click\":_vm.addLineItem}},[_vm._v(_vm._s(_vm._f(\"t\")('Add a custom line item','commerce')))])],1)])]]:[_c('hr'),_vm._v(\" \"),_c('div',[_c('div',{staticClass:\"flex add-line-item-table-header pb\"},[_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Add a line item', 'commerce'))+\"\\n \")]),_vm._v(\" \"),_c('form',{staticClass:\"add-line-item-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.lineItemAdd()}}},[_c('div',{staticClass:\"buttons buttons--add-line-item\"},[_c('input',{staticClass:\"btn\",class:{disabled: _vm.formDisabled},attrs:{\"type\":\"button\",\"disabled\":_vm.formDisabled,\"value\":_vm.$options.filters.t('Cancel', 'commerce')},on:{\"click\":function($event){_vm.showForm = false}}}),_vm._v(\" \"),_c('input',{staticClass:\"btn secondary\",class:{disabled: _vm.submitDisabled},attrs:{\"type\":\"submit\",\"disabled\":_vm.submitDisabled},domProps:{\"value\":_vm.$options.filters.t('Add', 'commerce')},on:{\"click\":function($event){$event.preventDefault();return _vm.lineItemAdd()}}})])])]),_vm._v(\" \"),_c('admin-table',{ref:\"addAdminTable\",attrs:{\"allow-multiple-selections\":true,\"table-data-endpoint\":_vm.endpoint,\"checkboxes\":true,\"checkbox-status\":_vm.isCheckboxEnabled,\"columns\":_vm.purchasableTableColumns,\"padded\":true,\"per-page\":\"10\",\"search\":\"true\"},on:{\"onSelect\":_vm.handleCheckboxSelect,\"data\":_vm.handleTableData}}),_vm._v(\" \"),_c('form',{staticClass:\"add-line-item-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.lineItemAdd()}}},[_c('div',{staticClass:\"buttons buttons--add-line-item\"},[_c('input',{staticClass:\"btn\",class:{disabled: _vm.formDisabled},attrs:{\"type\":\"button\",\"disabled\":_vm.formDisabled,\"value\":_vm.$options.filters.t('Cancel', 'commerce')},on:{\"click\":function($event){_vm.showForm = false}}}),_vm._v(\" \"),_c('input',{staticClass:\"btn secondary\",class:{disabled: _vm.submitDisabled},attrs:{\"type\":\"submit\",\"disabled\":_vm.submitDisabled},domProps:{\"value\":_vm.$options.filters.t('Add', 'commerce')},on:{\"click\":function($event){$event.preventDefault();return _vm.lineItemAdd()}}})])])],1)]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BtnLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BtnLink.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./BtnLink.vue?vue&type=template&id=5816f467&\"\nimport script from \"./BtnLink.vue?vue&type=script&lang=js&\"\nexport * from \"./BtnLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BtnLink.vue?vue&type=style&index=0&id=5816f467&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('button',{staticClass:\"btn-link-default\",class:_vm.buttonClass,attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('click')}}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderAdjustments.vue?vue&type=template&id=40736e28&\"\nimport script from \"./OrderAdjustments.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderAdjustments.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"order-flex justify-end\"},[_c('div',{staticClass:\"w-1/4\"},[(_vm.canEdit && !_vm.editMode && _vm.draft.order.isCompleted)?_c('btn-link',{on:{\"click\":function($event){return _vm.enableEditMode()}}},[_vm._v(_vm._s(_vm._f(\"t\")('Edit adjustments','commerce')))]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"w-3/4\"},[_c('adjustments',{attrs:{\"editing\":_vm.editing && _vm.editMode,\"adjustments\":_vm.adjustments,\"recalculation-mode\":_vm.recalculationMode},on:{\"addAdjustment\":_vm.addOrderAdjustment,\"updateAdjustment\":_vm.updateOrderAdjustment,\"removeAdjustment\":_vm.removeOrderAdjustment}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Total.vue?vue&type=template&id=5d0b23de&\"\nimport script from \"./Total.vue?vue&type=script&lang=js&\"\nexport * from \"./Total.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"order-flex justify-between align-center\"},[_c('h2',{staticClass:\"m-0\"},[_vm._v(_vm._s(_vm._f(\"t\")('Total','commerce')))]),_vm._v(\" \"),_c('h2',{staticClass:\"m-0\"},[_vm._v(_vm._s(_vm.order.totalPriceAsCurrency))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OrderDetails.vue?vue&type=template&id=12078153&\"\nimport script from \"./OrderDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrderDetails.vue?vue&type=style&index=0&id=12078153&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.draft)?_c('div',[_c('div',{staticClass:\"order-details pt\",class:{'order-opacity-50': _vm.recalculateLoading || _vm.saveLoading}},[(!_vm.draft)?[_c('div',{staticClass:\"spinner\"})]:[(_vm.lineItemsErrors.length > 0)?_c('ul',_vm._l((_vm.lineItemsErrors),function(lineItemError,lineItemsErrorsKey){return _c('li',{key:'lineItemsErrors-' + lineItemsErrorsKey,staticClass:\"error\"},[_vm._v(\"\\n \"+_vm._s(lineItemError)+\"\\n \")])}),0):_vm._e(),_vm._v(\" \"),(_vm.lineItems.length > 0 || _vm.editing)?[_c('line-items',{attrs:{\"line-items\":_vm.lineItems,\"editing\":_vm.editing,\"recalculation-mode\":_vm.recalculationMode},on:{\"updateLineItems\":_vm.updateLineItems}}),_vm._v(\" \"),(_vm.editing)?[_c('div',{staticClass:\"pb\",class:{\n 'orderedit-border-color orderedit-border-t pt':\n _vm.lineItems.length == 0,\n }},[_c('add-line-item',{on:{\"addLineItem\":_vm.addLineItem}})],1)]:_vm._e(),_vm._v(\" \"),(\n (_vm.editing && _vm.originalDraft.order.isCompleted) ||\n _vm.recalculateLoading\n )?_c('div',{staticClass:\"text-right pb\"},[(_vm.editing && _vm.originalDraft.order.isCompleted)?_c('div',{staticClass:\"recalculate-action\"},[_c('btn-link',{staticClass:\"recalculate-btn error\",on:{\"click\":function($event){return _vm.autoRecalculate()}}},[_vm._v(_vm._s(_vm._f(\"t\")('Recalculate order','commerce')))])],1):_vm._e(),_vm._v(\" \"),(_vm.recalculateLoading)?_c('div',{staticClass:\"spinner\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.lineItems.length > 0)?_c('div',{staticClass:\"order-total-summary pt\"},[(_vm.orderAdjustments.length > 0 || _vm.editing)?[_c('order-adjustments',{attrs:{\"adjustments\":_vm.orderAdjustments,\"editing\":_vm.editing,\"recalculation-mode\":_vm.recalculationMode},on:{\"updateOrderAdjustments\":_vm.updateOrderAdjustments}})]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"order-flex justify-end\"},[_c('div',{staticClass:\"w-3/4 orderedit-border-t orderedit-border-color pt\"},[_c('total',{attrs:{\"order\":_vm.draft.order}})],1)])],2):_vm._e()]:_vm._e()]],2)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderStatus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderStatus.vue?vue&type=template&id=49948987&\"\nimport script from \"./OrderStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrderStatus.vue?vue&type=style&index=0&id=49948987&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',[_c('a',{ref:\"orderStatus\",staticClass:\"btn menubtn order-status-btn\"},[(_vm.orderStatus.color)?[_c('span',{staticClass:\"status\",class:{[_vm.orderStatus.color]: true}})]:[_c('span',{staticClass:\"status\"})],_vm._v(\" \"),_c('span',{staticClass:\"order-status-btn-name\"},[_vm._v(_vm._s(_vm.orderStatus.uiLabel))])],2),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',{staticClass:\"padded\",attrs:{\"role\":\"listbox\"}},_vm._l((_vm.orderStatuses),function(status,key){return _c('li',{key:key},[_c('a',{class:{sel: _vm.orderStatus.id === status.value},attrs:{\"data-id\":status.id,\"data-color\":status.color,\"data-name\":status.uiLabel}},[_c('span',{staticClass:\"status\",class:{[status.color]: true}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(status.uiLabel))])])])}),0)])]),_vm._v(\" \"),(_vm.originalOrderStatusId !== _vm.orderStatusId)?[_c('div',{staticClass:\"order-status-message\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.message),expression:\"message\"}],ref:\"textarea\",staticClass:\"text\",attrs:{\"placeholder\":_vm.$options.filters.t('Message', 'commerce'),\"maxlength\":\"10000\"},domProps:{\"value\":(_vm.message)},on:{\"input\":function($event){if($event.target.composing)return;_vm.message=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"order-edit-suppress-emails\",attrs:{\"for\":\"suppressEmails\"}},[_c('lightswitch',{attrs:{\"name\":\"suppressEmails\",\"value\":_vm.suppressEmails},on:{\"change\":(val) => (_vm.suppressEmails = val)}}),_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Suppress emails','commerce'))+\"\\n \")],1)])]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderSite.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderSite.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderSite.vue?vue&type=template&id=68f7abb6&\"\nimport script from \"./OrderSite.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderSite.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrderSite.vue?vue&type=style&index=0&id=68f7abb6&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',[_c('a',{ref:\"orderSite\",staticClass:\"btn menubtn order-site-btn\"},[_c('span',[_vm._v(_vm._s(_vm.orderSite.name)+\" (\"+_vm._s(_vm.orderSite.language)+\")\")])]),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',{staticClass:\"padded\",attrs:{\"role\":\"listbox\"}},_vm._l((_vm.orderSites),function(site,key){return _c('li',{key:key},[_c('a',{class:{sel: _vm.orderSite.id === site.value},attrs:{\"data-id\":site.id,\"data-name\":site.name}},[_vm._v(\"\\n \"+_vm._s(site.name)+\" (\"+_vm._s(site.language)+\")\\n \")])])}),0)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* jshint esversion: 6 */\n/* globals Craft */\nexport default {\n /**\n * Builds draft data and makes sure values have the right type.\n **/\n buildDraftData(draft) {\n const draftData = {\n order: {\n customerId: draft.order.customerId,\n orderStatusId: draft.order.orderStatusId,\n isCompleted: draft.order.isCompleted,\n reference: draft.order.reference,\n couponCode: draft.order.couponCode,\n recalculationMode: draft.order.recalculationMode,\n shippingMethodHandle: draft.order.shippingMethodHandle,\n shippingMethodName: draft.order.shippingMethodName,\n shippingAddressId: draft.order.shippingAddressId,\n shippingAddress: null,\n billingAddressId: draft.order.billingAddressId,\n billingAddress: null,\n message: draft.order.message,\n dateOrdered: draft.order.dateOrdered,\n lineItems: [],\n orderAdjustments: [],\n orderSiteId: draft.order.orderSiteId,\n notices: draft.order.notices,\n adminNotices: draft.order.adminNotices,\n },\n };\n\n if (draft.order.billingAddress) {\n draftData.order.billingAddress = draft.order.billingAddress;\n }\n\n if (draft.order.shippingAddress) {\n draftData.order.shippingAddress = draft.order.shippingAddress;\n }\n\n if (Object.keys(draft.order).indexOf('sourceBillingAddressId') !== -1) {\n draftData.order.sourceBillingAddressId =\n draft.order.sourceBillingAddressId;\n }\n\n if (Object.keys(draft.order).indexOf('sourceShippingAddressId') !== -1) {\n draftData.order.sourceShippingAddressId =\n draft.order.sourceShippingAddressId;\n }\n\n if (draft.order.suppressEmails != undefined) {\n draftData.order.suppressEmails = draft.order.suppressEmails;\n }\n\n if (\n draftData.order.dateOrdered &&\n !draftData.order.dateOrdered.hasOwnProperty('timezone')\n ) {\n draftData.order.dateOrdered.timezone = Craft.timezone;\n }\n\n draftData.order.id = this.parseInputValue('int', draft.order.id);\n\n draft.order.lineItems.forEach((lineItem, lineItemKey) => {\n let _lineItem = {};\n _lineItem.lineItemStatusId = this.parseInputValue(\n 'int',\n lineItem.lineItemStatusId\n );\n _lineItem.id = this.parseInputValue('int', lineItem.id);\n _lineItem.type = lineItem.type;\n\n // Set line item properties for custom line items\n if (lineItem.type.value === 'custom') {\n if (lineItem.description) {\n _lineItem.description = lineItem.description;\n }\n\n if (lineItem.sku) {\n _lineItem.sku = lineItem.sku;\n }\n\n if (lineItem.hasFreeShipping !== undefined) {\n _lineItem.hasFreeShipping = lineItem.hasFreeShipping;\n }\n\n if (lineItem.isPromotable !== undefined) {\n _lineItem.isPromotable = lineItem.isPromotable;\n }\n\n if (lineItem.isShippable !== undefined) {\n _lineItem.isShippable = lineItem.isShippable;\n }\n\n if (lineItem.isTaxable !== undefined) {\n _lineItem.isTaxable = lineItem.isTaxable;\n }\n }\n\n _lineItem.purchasableId = this.parseInputValue(\n 'int',\n lineItem.purchasableId\n );\n _lineItem.shippingCategoryId = this.parseInputValue(\n 'int',\n lineItem.shippingCategoryId\n );\n _lineItem.taxCategoryId = this.parseInputValue(\n 'int',\n lineItem.taxCategoryId\n );\n _lineItem.promotionalPrice =\n lineItem.promotionalPrice === '' ? null : lineItem.promotionalPrice;\n _lineItem.price = lineItem.price;\n _lineItem.qty = this.parseInputValue('int', lineItem.qty);\n _lineItem.note = lineItem.note;\n _lineItem.privateNote = lineItem.privateNote;\n _lineItem.orderId = lineItem.orderId;\n _lineItem.options = lineItem.options;\n _lineItem.adjustments = [];\n _lineItem.uid = lineItem.uid;\n\n lineItem.adjustments.forEach((adjustment, adjustmentKey) => {\n let _adjustment = {};\n _adjustment.id = this.parseInputValue('int', adjustment.id);\n _adjustment.amount = this.parseInputValue('float', adjustment.amount);\n _adjustment.included = this.parseInputValue(\n 'bool',\n adjustment.included\n );\n _adjustment.orderId = this.parseInputValue('int', adjustment.orderId);\n _adjustment.lineItemId = this.parseInputValue(\n 'int',\n adjustment.lineItemId\n );\n _adjustment.name = adjustment.name;\n _adjustment.description = adjustment.description;\n _adjustment.type = adjustment.type;\n _adjustment.sourceSnapshot = adjustment.sourceSnapshot;\n\n _lineItem.adjustments[adjustmentKey] = _adjustment;\n });\n\n draftData.order.lineItems[lineItemKey] = _lineItem;\n });\n\n draft.order.orderAdjustments.forEach((adjustment, adjustmentKey) => {\n let _orderAdjustment = {};\n _orderAdjustment.id = this.parseInputValue('int', adjustment.id);\n _orderAdjustment.amount = this.parseInputValue(\n 'float',\n adjustment.amount\n );\n _orderAdjustment.included = this.parseInputValue(\n 'bool',\n adjustment.included\n );\n _orderAdjustment.orderId = this.parseInputValue(\n 'int',\n adjustment.orderId\n );\n _orderAdjustment.name = adjustment.name;\n _orderAdjustment.description = adjustment.description;\n _orderAdjustment.type = adjustment.type;\n _orderAdjustment.sourceSnapshot = adjustment.sourceSnapshot;\n\n draftData.order.orderAdjustments[adjustmentKey] = _orderAdjustment;\n });\n\n return draftData;\n },\n\n /**\n * Parse input value.\n **/\n parseInputValue(type, value) {\n let parsedValue = null;\n\n switch (type) {\n case 'int':\n parsedValue = parseInt(value);\n break;\n case 'float':\n parsedValue = parseFloat(value);\n break;\n case 'bool':\n parsedValue = !!value;\n break;\n }\n\n if (isNaN(parsedValue)) {\n return value;\n }\n\n return parsedValue;\n },\n};\n","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShippingMethod.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShippingMethod.vue?vue&type=script&lang=js&\"","/* jshint esversion: 6, strict: false */\n/* globals Craft, Garnish, $ */\n\nimport axios from 'axios/index';\n\nexport default {\n get() {\n //If we have the order loaded into the page already return that data and save us a ajax trip\n if (window.orderEdit.data) {\n return new Promise((resolve) => {\n var response = {};\n response.data = window.orderEdit.data;\n resolve(response);\n });\n }\n },\n\n recalculate(data) {\n return Craft.sendActionRequest('POST', 'commerce/orders/refresh', {data});\n },\n\n getShippingMethodOptions(data) {\n return Craft.sendActionRequest(\n 'POST',\n 'commerce/orders/get-shipping-method-options',\n {data}\n );\n },\n\n customerSearch(options) {\n const data = {};\n const opts = Object.assign({query: null, cancelToken: null}, options);\n let config = {\n headers: {\n 'X-CSRF-Token': Craft.csrfTokenValue,\n },\n };\n\n if (typeof opts.cancelToken !== 'undefined' && opts.cancelToken) {\n config['cancelToken'] = opts.cancelToken;\n }\n\n if (typeof opts.query !== 'undefined' && opts.query) {\n data.query = encodeURIComponent(opts.query);\n }\n\n return axios.get(\n Craft.getActionUrl('commerce/orders/customer-search', data),\n config\n );\n },\n\n sendEmail(emailTemplateId) {\n return axios.post(\n Craft.getActionUrl('commerce/orders/send-email', {\n id: emailTemplateId,\n orderId: window.orderEdit.orderId,\n }),\n {},\n {\n headers: {\n 'X-CSRF-Token': Craft.csrfTokenValue,\n },\n }\n );\n },\n\n deleteOrder(orderId) {\n let formData = new FormData();\n formData.append('orderId', orderId);\n\n return axios.post(\n Craft.getActionUrl('commerce/orders/delete-order'),\n formData,\n {\n headers: {\n 'X-CSRF-Token': Craft.csrfTokenValue,\n },\n }\n );\n },\n};\n","import { render, staticRenderFns } from \"./ShippingMethod.vue?vue&type=template&id=428a2a54&\"\nimport script from \"./ShippingMethod.vue?vue&type=script&lang=js&\"\nexport * from \"./ShippingMethod.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ShippingMethod.vue?vue&type=style&index=0&id=428a2a54&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"order-edit-shipping-method-wrapper\"}},[(_vm.loading)?_c('div',{staticClass:\"spinner\"}):(_vm.showSelect)?[_c('select-input',{attrs:{\"label\":\"name\",\"options\":_vm.shippingMethods,\"filterable\":true,\"clearable\":false,\"placeholder\":_vm.shippingMethodHandle},on:{\"input\":_vm.onChange},scopedSlots:_vm._u([{key:\"option\",fn:function(slotProps){return [_c('div',{staticClass:\"shipping-method-select-option\"},[_c('span',{staticClass:\"status\",class:{\n enabled: slotProps.option.matchesOrder,\n disabled: !slotProps.option.matchesOrder,\n }}),_vm._v(_vm._s(slotProps.option.name)+\"\\n \")])]}},{key:\"selected-option\",fn:function(slotProps){return [_c('div',[_c('span',{staticClass:\"status\",class:{\n enabled: slotProps.selectedOption.matchesOrder,\n disabled:\n !slotProps.selectedOption.matchesOrder,\n }}),_vm._v(_vm._s(slotProps.selectedOption.name)+\"\\n \")])]}}]),model:{value:(_vm.selectedShippingMethod),callback:function ($$v) {_vm.selectedShippingMethod=$$v},expression:\"selectedShippingMethod\"}})]:[_c('div',{staticClass:\"flex flex-nowrap align-center\"},[_c('div',{staticClass:\"flex-grow\"},[_c('span',[_vm._v(_vm._s(_vm.currentMethodName))]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"small code shipping-method-handle\"},[_vm._v(_vm._s(_vm.orderShippingMethodHandle))])]),_vm._v(\" \"),_c('button',{staticClass:\"btn small icon\",attrs:{\"data-icon\":\"edit\"},on:{\"click\":_vm.onEdit}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Edit','commerce'))+\"\\n \")])])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* global $ */\n\nimport utils from '../helpers/utils';\n\nexport default {\n methods: {\n saveOrder: function (draft) {\n if (this.$store.state.saveLoading) {\n return false;\n }\n\n this.$store.commit('updateSaveLoading', true);\n\n const data = utils.buildDraftData(draft);\n const dataString = JSON.stringify(data);\n\n this.$store.commit('updateOrderData', dataString);\n\n this.$nextTick(() => {\n $('#main-form').submit();\n });\n },\n },\n};\n","\n\n \n\n
\n
{{ 'Last Updated' | t('commerce') }}
\n {{ draft.order.dateUpdated.date }}\n {{ draft.order.dateUpdated.time }}\n
\n\n
\n
{{ 'IP Address' | t('commerce') }}
\n {{ draft.order.lastIp }}\n
\n\n
\n
{{ 'Origin' | t('commerce') }}
\n {{ originLabel(draft.order.origin) }}\n
\n \n
{{ 'Completed Email' | t('commerce') }}
\n {{ draft.order.orderCompletedEmail }}\n \n \n \n\n\n\n\n\n","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderMeta.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderMeta.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DateOrderedInput.vue?vue&type=template&id=71bc488e&\"\nimport script from \"./DateOrderedInput.vue?vue&type=script&lang=js&\"\nexport * from \"./DateOrderedInput.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"datetimewrapper\"},[_c('div',{staticClass:\"datewrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.dateValue),expression:\"dateValue\"}],ref:\"dateInput\",staticClass:\"text\",attrs:{\"type\":\"text\",\"autocomplete\":\"false\",\"size\":\"10\",\"placeholder\":\" \"},domProps:{\"value\":(_vm.dateValue)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.dateValue=$event.target.value},_vm.onDateInput]}}),_vm._v(\" \"),_c('div',{attrs:{\"data-icon\":\"date\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"timewrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.timeValue),expression:\"timeValue\"}],ref:\"timeInput\",staticClass:\"text\",attrs:{\"type\":\"text\",\"autocomplete\":\"false\",\"size\":\"10\",\"placeholder\":\" \"},domProps:{\"value\":(_vm.timeValue)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.timeValue=$event.target.value},_vm.onDateInput]}}),_vm._v(\" \"),_c('div',{attrs:{\"data-icon\":\"time\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OrderMeta.vue?vue&type=template&id=556d87c2&\"\nimport script from \"./OrderMeta.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderMeta.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrderMeta.vue?vue&type=style&index=0&id=556d87c2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.draft)?_c('div',{staticClass:\"order-meta-container\",class:{loading: _vm.recalculateLoading || _vm.saveLoading}},[(_vm.editing)?_c('div',{staticClass:\"meta\",attrs:{\"id\":\"settings\"}},[_c('div',{staticClass:\"field\",attrs:{\"id\":\"reference-field\"}},[_c('div',{staticClass:\"heading\"},[_c('label',{attrs:{\"id\":\"reference-label\",\"for\":\"reference\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Reference','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"input ltr\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.reference),expression:\"reference\"}],staticClass:\"text fullwidth\",attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"placeholder\":_vm.$options.filters.t('Enter reference', 'commerce')},domProps:{\"value\":(_vm.reference)},on:{\"input\":function($event){if($event.target.composing)return;_vm.reference=$event.target.value}}})])]),_vm._v(\" \"),_c('field',{attrs:{\"label\":_vm.$options.filters.t('Coupon Code', 'commerce'),\"errors\":_vm.getErrors('couponCode')[0]}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.couponCodeLocal),expression:\"couponCodeLocal\"}],ref:\"couponCodeInput\",staticClass:\"text fullwidth coupon-code-input\",class:{'coupon-code-invalid': _vm.couponCodeInvalid},attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"placeholder\":_vm.$options.filters.t('Enter coupon code', 'commerce')},domProps:{\"value\":(_vm.couponCodeLocal)},on:{\"focus\":_vm.onCouponCodeFocus,\"input\":[function($event){if($event.target.composing)return;_vm.couponCodeLocal=$event.target.value},_vm.onCouponCodeInput],\"blur\":_vm.onCouponCodeBlur,\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onCouponCodeBlur.apply(null, arguments)}}})]),_vm._v(\" \"),(_vm.order.isCompleted)?_c('field',{attrs:{\"label\":_vm.$options.filters.t('Date Ordered', 'commerce')}},[_c('date-ordered-input',{attrs:{\"date\":_vm.draft.order.dateOrdered},on:{\"update\":_vm.updateDateOrderedInput}})],1):_vm._e(),_vm._v(\" \"),_c('field',{attrs:{\"label\":_vm.$options.filters.t('Order Site', 'commerce')}},[_c('order-site',{attrs:{\"originalOrderSiteId\":_vm.originalDraft.order.orderSiteId,\"order\":_vm.order},on:{\"updateOrder\":_vm.updateOrder}})],1),_vm._v(\" \"),(!_vm.draft.order.isCompleted)?_c('div',{staticClass:\"field\",attrs:{\"id\":\"isCompleted-field\"}},[_c('div',{staticClass:\"heading\"},[_c('label',{attrs:{\"id\":\"isCompleted-label\",\"for\":\"isCompleted\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Completed','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"input ltr order-edit-mark-completed\"},[_c('div',{staticClass:\"buttons\"},[_c('input',{staticClass:\"btn small\",class:{\n disabled: !_vm.hasCustomer || _vm.recalculateLoading,\n },attrs:{\"type\":\"button\",\"value\":_vm.$options.filters.t(\n 'Mark as completed',\n 'commerce'\n ),\"disabled\":!_vm.hasCustomer || _vm.recalculateLoading},on:{\"click\":_vm.markAsCompleted}})]),_vm._v(\" \"),_c('div',[_c('label',{staticClass:\"order-edit-suppress-emails\",attrs:{\"for\":\"suppressEmails\"}},[_c('lightswitch',{attrs:{\"name\":\"suppressEmails\",\"value\":_vm.suppressEmails},on:{\"change\":_vm.handleSuppressEmailsChange}}),_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Suppress emails','commerce'))+\"\\n \")],1)])])]):_vm._e(),_vm._v(\" \"),(_vm.draft.order.isCompleted)?[_c('div',{staticClass:\"field\",attrs:{\"id\":\"orderStatus-field\"}},[_c('div',{staticClass:\"heading\"},[_c('label',{attrs:{\"id\":\"orderStatus-label\",\"for\":\"status\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Status','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"input ltr\"},[_c('order-status',{attrs:{\"originalOrderStatusId\":_vm.originalDraft.order.orderStatusId,\"original-message\":_vm.originalDraft.order.message,\"suppress-emails\":_vm.draft.order.suppressEmails,\"order\":_vm.order},on:{\"updateOrder\":_vm.updateOrder}})],1)])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"field\",attrs:{\"id\":\"shippingMethod-field\"}},[_c('div',{staticClass:\"heading\"},[_c('label',{attrs:{\"id\":\"shippingMethod-label\",\"for\":\"slug\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Shipping Method','commerce')))])]),_vm._v(\" \"),_c('div',{staticClass:\"input ltr\"},[_c('shipping-method',{attrs:{\"order\":_vm.order},on:{\"updateOrder\":_vm.updateOrder}})],1)])],2):_vm._e(),_vm._v(\" \"),(!_vm.editing)?_c('div',{staticClass:\"order-meta meta read-only\"},[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Reference','commerce')))]),_vm._v(\" \"),_c('p',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.reference))])]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Coupon Code','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value code\"},[_vm._v(_vm._s(_vm.draft.order.couponCode))])]),_vm._v(\" \"),(_vm.draft.order.isCompleted)?[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Date Ordered','commerce'))+\"\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.dateOrdered.date)+\"\\n \"+_vm._s(_vm.draft.order.dateOrdered.time))])])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Order Site','commerce')))]),_vm._v(\" \"),(_vm.draft.order.orderSite)?_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.orderSite.name)+\" (\"+_vm._s(_vm.draft.order.orderSite.language)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.draft.order.isCompleted)?[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Status','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\",domProps:{\"innerHTML\":_vm._s(_vm.draft.order.orderStatusHtml)}})])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"data order-meta-shipping-method\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Shipping Method','commerce')))]),_vm._v(\" \"),(_vm.draft.order.shippingMethodHandle)?_c('div',{staticClass:\"value\"},[(_vm.draft.order.shippingMethodName)?_c('span',[_vm._v(_vm._s(_vm.draft.order.shippingMethodName))]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"small code shipping-method-handle\"},[_vm._v(_vm._s(_vm.draft.order.shippingMethodHandle))])]):_vm._e()])],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"meta read-only\",attrs:{\"id\":\"meta\"}},[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('ID','commerce')))]),_vm._v(\" \"),_c('p',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.id))])]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Short Number','commerce')))]),_vm._v(\" \"),_c('div',{staticClass:\"value order-number-value\"},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.draft.order.shortNumber)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"hidden-input\"},[_c('input',{ref:\"orderShortNumber\",attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.draft.order.shortNumber}})]),_vm._v(\" \"),_c('btn-link',{on:{\"click\":function($event){return _vm.copy(_vm.$refs.orderShortNumber)}}},[_vm._v(_vm._s(_vm._f(\"t\")('Copy','commerce')))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Number','commerce')))]),_vm._v(\" \"),_c('div',{staticClass:\"value order-number-value\"},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.draft.order.number)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"hidden-input\"},[_c('input',{ref:\"orderNumber\",attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.draft.order.number}})]),_vm._v(\" \"),_c('btn-link',{on:{\"click\":function($event){return _vm.copy(_vm.$refs.orderNumber)}}},[_vm._v(_vm._s(_vm._f(\"t\")('Copy','commerce')))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Store','commerce')))]),_vm._v(\" \"),_c('p',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.store.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Paid Status','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\",domProps:{\"innerHTML\":_vm._s(_vm.draft.order.paidStatusHtml)}})]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Total Price','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.totalPriceAsCurrency))])]),_vm._v(\" \"),(_vm.draft.order.totalPaid != 0)?[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Paid Amount','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.totalPaidAsCurrency))])])]:_vm._e(),_vm._v(\" \"),(!_vm.draft.order.datePaid && _vm.draft.order.dateAuthorized)?[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Date Authorized','commerce'))+\"\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.dateAuthorized.date)+\"\\n \"+_vm._s(_vm.draft.order.dateAuthorized.time))])])]:_vm._e(),_vm._v(\" \"),(_vm.draft.order.datePaid)?[_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Date Paid','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.datePaid.date)+\"\\n \"+_vm._s(_vm.draft.order.datePaid.time))])])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Last Updated','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.dateUpdated.date)+\"\\n \"+_vm._s(_vm.draft.order.dateUpdated.time))])]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('IP Address','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.lastIp))])]),_vm._v(\" \"),_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Origin','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.originLabel(_vm.draft.order.origin)))])]),_vm._v(\" \"),(\n _vm.draft.order.orderCompletedEmail &&\n _vm.draft.order.orderCompletedEmail != _vm.draft.order.email\n )?_c('div',{staticClass:\"data\"},[_c('h5',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm._f(\"t\")('Completed Email','commerce')))]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.draft.order.orderCompletedEmail))])]):_vm._e()],2)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderNotices.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderNotices.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./OrderNotices.vue?vue&type=template&id=8e45959c&\"\nimport script from \"./OrderNotices.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderNotices.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrderNotices.vue?vue&type=style&index=0&id=8e45959c&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"order-notices-wrapper\"},[(_vm.showAdminNotices)?_c('div',{staticClass:\"meta read-only order-admin-notices\"},[_c('div',{staticClass:\"order-flex order-notices-header\"},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Admin Notices','commerce'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"order-notices-items\"},_vm._l((_vm.adminNotices),function(notice){return _c('div',{key:notice.id},[_c('hr'),_vm._v(\" \"),_c('div',{staticClass:\"order-flex order-notices-item order-admin-notice-item\"},[_c('div',[_vm._v(_vm._s(notice.message))]),_vm._v(\" \"),(_vm.editing)?_c('div',[_c('button',{staticClass:\"btn small\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissAdminNotice(notice)}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Clear','commerce'))+\"\\n \")])]):_vm._e()])])}),0)]):_vm._e(),_vm._v(\" \"),(_vm.showNotices)?_c('div',{staticClass:\"meta read-only warning order-customer-notices\"},[_c('div',{staticClass:\"order-flex order-notices-header\"},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Customer Notices','commerce'))+\"\\n \")]),_vm._v(\" \"),(_vm.editing)?_c('div',[_c('button',{staticClass:\"btn small\",on:{\"click\":function($event){$event.preventDefault();return _vm.clearNotices.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Clear notices','commerce'))+\"\\n \")])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"order-notices-items\"},_vm._l((_vm.regularNotices),function(notice){return _c('div',{key:notice.id},[_c('hr'),_vm._v(\" \"),_c('div',{staticClass:\"order-notices-item\"},[_vm._v(\"\\n \"+_vm._s(notice.message)+\"\\n \")])])}),0)]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OptionShortcutLabel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OptionShortcutLabel.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./OptionShortcutLabel.vue?vue&type=template&id=e4cdb9c2&\"\nimport script from \"./OptionShortcutLabel.vue?vue&type=script&lang=js&\"\nexport * from \"./OptionShortcutLabel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OptionShortcutLabel.vue?vue&type=style&index=0&id=e4cdb9c2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"option-shortcut-label\"},[(_vm.os === 'mac')?[_c('span',{staticClass:\"shortcut\"},[_vm._v(_vm._s((_vm.alt ? '⌥' : '') + (_vm.shift ? '⇧' : '') + '⌘' + _vm.shortcutKey))])]:[_c('span',{staticClass:\"shortcut\"},[_vm._v(_vm._s('Ctrl+' +\n (_vm.alt ? 'Alt+' : '') +\n (_vm.shift ? 'Shift+' : '') +\n _vm.shortcutKey))])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderActions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderActions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateOrderBtn.vue?vue&type=template&id=ccf7514e&\"\nimport script from \"./UpdateOrderBtn.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateOrderBtn.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"order-flex\",attrs:{\"id\":\"order-save\"}},[(_vm.editing)?[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.orderData),expression:\"orderData\"}],attrs:{\"type\":\"hidden\",\"name\":\"orderData\",\"id\":\"test\"},domProps:{\"value\":(_vm.orderData)},on:{\"input\":function($event){if($event.target.composing)return;_vm.orderData=$event.target.value}}}),_vm._v(\" \"),_c('input',{staticClass:\"btn submit\",class:{disabled: !_vm.hasCustomer || _vm.recalculateLoading},attrs:{\"id\":\"order-save-btn\",\"type\":\"button\",\"value\":_vm.$options.filters.t('Update order', 'commerce'),\"disabled\":!_vm.hasCustomer || _vm.recalculateLoading},on:{\"click\":function($event){return _vm.save()}}}),_vm._v(\" \"),_c('div',{staticClass:\"spacer\"})]:_vm._e(),_vm._v(\" \"),_c('div',[_c('div',{ref:\"updateMenuBtn\",staticClass:\"btn menubtn\",attrs:{\"data-icon\":\"settings\",\"title\":_vm.$options.filters.t('Actions', 'commerce')}}),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[(_vm.editing && _vm.hasCustomer && _vm.hasAddresses)?[_c('ul',[_c('li',[_c('a',{on:{\"click\":function($event){return _vm.save({redirect: _vm.ordersIndexUrl})}}},[_c('option-shortcut-label',{attrs:{\"os\":\"mac\",\"shortcut-key\":\"S\"}}),_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Save and return to all orders','commerce'))+\"\\n \")],1)])])]:_vm._e(),_vm._v(\" \"),(_vm.draft && !_vm.draft.order.isCompleted)?[_c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.copy()}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Share cart…','commerce'))+\"\\n \")])])])]:_vm._e(),_vm._v(\" \"),(_vm.canDelete)?[(_vm.editing && _vm.hasCustomer && _vm.hasAddresses)?[_c('hr')]:_vm._e(),_vm._v(\" \"),_c('ul',[_c('li',[_c('a',{staticClass:\"error\",on:{\"click\":function($event){return _vm.deleteOrder()}}},[_vm._v(_vm._s(_vm._f(\"t\")('Delete','commerce')))])])])]:_vm._e()],2)])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OrderActions.vue?vue&type=template&id=51d2e19e&\"\nimport script from \"./OrderActions.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderActions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrderActions.vue?vue&type=style&index=0&id=51d2e19e&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canEdit)?_c('div',{staticClass:\"order-flex\"},[_c('div',{staticClass:\"order-edit-action-buttons\"},[(_vm.saveLoading)?_c('div',{staticClass:\"spinner\",attrs:{\"id\":\"order-save-spinner\"}}):_vm._e(),_vm._v(\" \"),(!_vm.editing)?[_c('input',{staticClass:\"btn\",attrs:{\"id\":\"order-edit-btn\",\"type\":\"button\",\"value\":_vm.$options.filters.t('Edit', 'commerce')},on:{\"click\":function($event){return _vm.edit()}}})]:[_c('input',{staticClass:\"btn\",attrs:{\"id\":\"order-cancel-btn\",\"type\":\"button\",\"value\":_vm.$options.filters.t('Cancel', 'commerce')},on:{\"click\":function($event){return _vm.cancel()}}})]],2),_vm._v(\" \"),(_vm.editing || _vm.canDelete)?[_c('update-order-btn',{ref:\"updateOrderBtn\"})]:_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Customer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Customer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Customer.vue?vue&type=template&id=12d07da8&\"\nimport script from \"./Customer.vue?vue&type=script&lang=js&\"\nexport * from \"./Customer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Customer.vue?vue&type=style&index=0&id=12d07da8&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"customer-wrapper\"},[(_vm.customer)?_c('div',{staticClass:\"order-flex align-center\",class:{'customer-display': _vm.display}},[_c('div',{staticClass:\"customer-photo-wrapper\"},[_c('div',{staticClass:\"customer-photo order-flex justify-center align-center\",class:_vm.avatarClass},[(_vm.customer.photo && _vm.customer.photoThumbUrl)?_c('img',{staticClass:\"w-full\",attrs:{\"src\":_vm.customer.photoThumbUrl,\"alt\":_vm.customer.email}}):_c('div',{class:_vm.getBgColor(_vm.initialChar)},[_vm._v(\"\\n \"+_vm._s(_vm.initialChar)+\"\\n \")])]),_vm._v(\" \"),_c('span',{staticClass:\"status\",class:_vm.customer.status})]),_vm._v(\" \"),_c('div',{staticClass:\"customer-info-container ml-1\"},[(_vm.getDisplayName(false))?_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.getDisplayName(false))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"w-full light\"},[_vm._v(_vm._s(_vm.customer.email))]),_vm._v(\" \"),(_vm.display && _vm.customer.cpEditUrl && _vm.canEditUsers)?_c('div',{staticClass:\"w-full\"},[(_vm.customer.cpEditUrl)?_c('a',{attrs:{\"href\":_vm.customer.cpEditUrl}},[_vm._v(_vm._s(_vm.$options.filters.t('View customer', 'commerce')))]):_vm._e()]):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.showRemove)?_c('button',{staticClass:\"customer-remove delete icon\",attrs:{\"type\":\"button\",\"title\":_vm.$options.filters.t('Remove', 'commerce'),\"aria-label\":_vm.removeButtonLabel},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('remove')}}}):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressSelect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AddressSelect.vue?vue&type=template&id=4c88f931&scoped=true&\"\nimport script from \"./AddressSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./AddressSelect.vue?vue&type=script&lang=js&\"\nimport style1 from \"./AddressSelect.vue?vue&type=style&index=1&id=4c88f931&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c88f931\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.customerId)?_c('div',{staticClass:\"order-edit-address-select menu-item\",attrs:{\"data-icon\":\"list\"}},[_c('button',{class:{disabled: !_vm.canSelectAddress},attrs:{\"disabled\":!_vm.canSelectAddress},on:{\"click\":function($event){$event.preventDefault();return _vm.open.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Select address', 'commerce'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"hidden\"},[_c('div',{ref:\"addressselectmodal\",staticClass:\"order-edit-modal order-edit-modal--address-select modal fitted\"},[_c('div',{staticClass:\"body\"},[_vm._l((_vm.addresses),function(address,index){return _c('div',{key:index},[_c('label',{class:{\n selected:\n _vm.selectedAddress &&\n address.id == _vm.selectedAddress.id,\n }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedAddress),expression:\"selectedAddress\"}],staticClass:\"visually-hidden\",attrs:{\"type\":\"radio\",\"name\":'address-select-' + _vm.addressModel},domProps:{\"value\":address,\"checked\":_vm._q(_vm.selectedAddress,address)},on:{\"change\":function($event){_vm.selectedAddress=address}}}),_vm._v(\" \"),_c('ul',{domProps:{\"innerHTML\":_vm._s(address.html)}})])])}),_vm._v(\" \"),(_vm.isLoadMoreVisible)?_c('div',{staticClass:\"order-edit-modal-load-more\"},[_c('div',[_c('btn-link',{attrs:{\"button-class\":\"btn\"},on:{\"click\":_vm.loadMore}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Load more', 'commerce'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"spinner\",class:{hidden: !_vm.isLoadingMore}})],1)]):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('div',{staticClass:\"buttons right\"},[_c('btn-link',{attrs:{\"button-class\":\"btn\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$options.filters.t('Cancel', 'commerce')))]),_vm._v(\" \"),_c('btn-link',{class:{disabled: _vm.isDoneDisabled},attrs:{\"button-class\":\"btn submit\",\"disabled\":_vm.isDoneDisabled},on:{\"click\":_vm.done}},[_vm._v(_vm._s(_vm.$options.filters.t('Done', 'commerce')))])],1)])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressEdit.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressEdit.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AddressEdit.vue?vue&type=template&id=c12c0a6c&\"\nimport script from \"./AddressEdit.vue?vue&type=script&lang=js&\"\nexport * from \"./AddressEdit.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AddressEdit.vue?vue&type=style&index=0&id=c12c0a6c&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"container\"},[_c('div',{staticClass:\"order-address-display\"},[(_vm.address)?[_c('ul',{ref:\"address\",domProps:{\"innerHTML\":_vm._s(_vm.address)},on:{\"click\":_vm.handleEditAddress}})]:[_c('div',{staticClass:\"zilch\"},[_vm._v(_vm._s(_vm.emptyMsg))])],_vm._v(\" \"),_c('button',{ref:\"disclosureMenu\",staticClass:\"btn menubtn action-btn\",attrs:{\"type\":\"button\",\"title\":\"Actions\",\"aria-controls\":_vm.disclosureId,\"data-disclosure-trigger\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"menu menu--disclosure\",attrs:{\"id\":_vm.disclosureId}},[_c('ul',[_c('li',[_c('button',{staticClass:\"menu-item\",class:{disabled: !_vm.address},attrs:{\"disabled\":!_vm.address,\"data-icon\":\"edit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleEditAddress.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Edit address', 'commerce'))+\"\\n \")])]),_vm._v(\" \"),_c('li',[_c('address-select',{attrs:{\"customer-id\":_vm.customerId},on:{\"update\":_vm.handleSelect}})],1),_vm._v(\" \"),_c('li',[_c('button',{staticClass:\"menu-item\",attrs:{\"data-icon\":\"plus\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleNewAddress.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('New address', 'commerce'))+\"\\n \")])]),_vm._v(\" \"),(_vm.copyToAddress)?_c('li',[_c('button',{staticClass:\"menu-item\",class:{disabled: !_vm.address},attrs:{\"disabled\":!_vm.address,\"data-icon\":\"clipboard\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleCopy.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t(\n 'Copy to {location}',\n 'commerce',\n {location: _vm.copyToAddress}\n ))+\"\\n \")])]):_vm._e(),_vm._v(\" \"),_c('li',[_c('button',{staticClass:\"menu-item\",class:{disabled: !_vm.address || !_vm.canCopyToUser},attrs:{\"disabled\":!_vm.address,\"data-icon\":\"clipboard\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleCopyToUser.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t(\n 'Copy to {location}',\n 'commerce',\n {\n location: _vm.$options.filters.t(\n 'User',\n 'commerce'\n ),\n }\n ))+\"\\n \")])])]),_vm._v(\" \"),_c('hr',{staticClass:\"padded\"}),_vm._v(\" \"),_c('ul',{staticClass:\"padded\"},[_c('li',[_c('button',{staticClass:\"error menu-item\",class:{disabled: !_vm.address},attrs:{\"disabled\":!_vm.address,\"data-icon\":\"trash\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleRemove.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Remove address', 'commerce'))+\"\\n \")])])])])],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomerSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomerSelect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CustomerSelect.vue?vue&type=template&id=c338ae24&\"\nimport script from \"./CustomerSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomerSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomerSelect.vue?vue&type=style&index=0&id=c338ae24&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('select-input',{ref:\"vSelect\",staticClass:\"customer-select\",attrs:{\"label\":\"email\",\"options\":_vm.customers,\"filterable\":false,\"clearable\":false,\"pre-filtered\":true,\"create-option\":_vm.createOption,\"placeholder\":_vm.$options.filters.t('Search or enter customer email…', 'commerce'),\"clear-search-on-blur\":false,\"taggable\":\"\"},on:{\"input\":_vm.onChange,\"search\":_vm.onSearch,\"created\":_vm.onCreated},scopedSlots:_vm._u([{key:\"option\",fn:function(slotProps){return [(\n slotProps.option.id ||\n (!slotProps.option.id && !_vm.customers.length)\n )?_c('div',{staticClass:\"customer-select-option\"},[(\n !slotProps.option.id &&\n !_vm.customers.length &&\n _vm.$v.newCustomerEmail.$invalid\n )?[_c('div',{staticClass:\"order-flex justify-center\"},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t(\n 'A valid email is required to create a customer.',\n 'commerce'\n ))+\"\\n \")])])]:(\n !slotProps.option.id &&\n !_vm.$v.newCustomerEmail.$invalid &&\n !_vm.customers.length\n )?[_c('div',{staticClass:\"order-flex align-center\"},[_c('div',{staticClass:\"customer-photo-wrapper\"},[_c('div',{staticClass:\"customer-photo order-flex customer-photo--initial customer-photo--email justify-center align-center\"},[_c('span',{staticClass:\"icon\",attrs:{\"data-icon\":\"plus\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"ml-1\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Create customer: “{email}”','commerce', {\n email: slotProps.option.email,\n }))+\"\\n \")])])]:(slotProps.option.id)?[_c('div',[_c('customer',{attrs:{\"customer\":slotProps.option}})],1)]:_vm._e()],2):_vm._e()]}}]),model:{value:(_vm.selectedCustomer),callback:function ($$v) {_vm.selectedCustomer=$$v},expression:\"selectedCustomer\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n

\n {{\n $options.filters.t('Notice', 'app')\n }}\n {{\n $options.filters.t(\n 'The customer for this order has been deleted.',\n 'commerce'\n )\n }}\n

\n \n \n \n\n \n
\n \n \n
\n
\n \n \n
\n\n \n \n \n\n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderCustomer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderCustomer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderCustomer.vue?vue&type=template&id=9869829e&\"\nimport script from \"./OrderCustomer.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderCustomer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrderCustomer.vue?vue&type=style&index=0&id=9869829e&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.draft)?_c('div',{class:{'order-opacity-50': _vm.recalculateLoading || _vm.saveLoading}},[_c('div',[_c('div',{staticClass:\"order-flex justify-between align-center pb\"},[_c('h3',{staticClass:\"m-0\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('Customer', 'commerce'))+\"\\n \")]),_vm._v(\" \"),(_vm.hasCustomer && _vm.canEdit && (!_vm.editing || !_vm.editMode))?[_c('btn-link',{on:{\"click\":function($event){return _vm.enableEditMode()}}},[_vm._v(_vm._s(_vm.$options.filters.t('Edit', 'commerce')))])]:_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"customer-select-wrapper\",class:{'customer-select-wrapper--selecting': !_vm.hasCustomer}},[(_vm.hasCustomer)?_c('customer',{attrs:{\"customer\":_vm.customer,\"display\":true,\"show-remove\":_vm.editing && _vm.editMode},on:{\"remove\":_vm.removeCustomer}}):_vm._e(),_vm._v(\" \"),(\n !_vm.hasCustomer &&\n ((_vm.editing && _vm.editMode) || !_vm.draft.order.customerDeleted)\n )?[_c('customer-select',{attrs:{\"order\":_vm.draft.order},on:{\"update\":_vm.updateCustomer}})]:(!_vm.hasCustomer && _vm.draft.order.customerDeleted)?[_c('p',{staticClass:\"warning has-icon\"},[_c('span',{staticClass:\"icon\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"visually-hidden\"},[_vm._v(_vm._s(_vm.$options.filters.t('Notice', 'app')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$options.filters.t(\n 'The customer for this order has been deleted.',\n 'commerce'\n )))])])]:_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"order-flex order-box-sizing px-4 -mx-4\",class:{pt: _vm.hasCustomer || _vm.hasAnAddress}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.editing || !_vm.editMode),expression:\"!editing || !editMode\"}],staticClass:\"w-1/2 pr\"},[(_vm.draft && _vm.draft.order.billingAddressHtml)?[_c('ul',{staticClass:\"order-address-display order-address-display--static\",domProps:{\"innerHTML\":_vm._s(_vm.draft.order.billingAddressHtml)}})]:[_c('div',{staticClass:\"zilch\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t('No billing address', 'commerce'))+\"\\n \")])]],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.editing || !_vm.editMode),expression:\"!editing || !editMode\"}],staticClass:\"w-1/2 pl\"},[(_vm.draft && _vm.draft.order.shippingAddressHtml)?[_c('ul',{staticClass:\"order-address-display order-address-display--static\",domProps:{\"innerHTML\":_vm._s(_vm.draft.order.shippingAddressHtml)}})]:[_c('div',{staticClass:\"zilch\"},[_vm._v(\"\\n \"+_vm._s(_vm.$options.filters.t(\n 'No shipping address',\n 'commerce'\n ))+\"\\n \")])]],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n ((!_vm.hasCustomer && _vm.draft.order.isCompleted) ||\n _vm.hasCustomer) &&\n _vm.editing &&\n _vm.editMode\n ),expression:\"\\n ((!hasCustomer && draft.order.isCompleted) ||\\n hasCustomer) &&\\n editing &&\\n editMode\\n \"}],staticClass:\"w-1/2 pr\"},[_c('address-edit',{attrs:{\"title\":_vm.titles.billingAddress,\"model-name\":\"billing\",\"address\":_vm.draft.order.billingAddressHtml,\"copy-to-address\":_vm.$options.filters.t('shipping address', 'commerce'),\"can-copy-to-user\":_vm.canEditUsers &&\n _vm.draft.order.sourceBillingAddressId == null &&\n _vm.customerId &&\n _vm.draft.order.customer.isCredentialed,\"customer-id\":_vm.draft.order.customerId,\"empty-message\":_vm.$options.filters.t('No billing address', 'commerce'),\"customer-updated\":_vm.customerUpdatedTime},on:{\"update\":_vm.updateBillingAddress,\"copy\":function($event){return _vm.copyAddress('shipping')},\"copyAddressToUser\":function($event){return _vm.copyToUser('billing')},\"remove\":_vm.removeBillingAddress}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n ((!_vm.hasCustomer && _vm.draft.order.isCompleted) ||\n _vm.hasCustomer) &&\n _vm.editing &&\n _vm.editMode\n ),expression:\"\\n ((!hasCustomer && draft.order.isCompleted) ||\\n hasCustomer) &&\\n editing &&\\n editMode\\n \"}],staticClass:\"w-1/2 pl\"},[_c('address-edit',{attrs:{\"title\":_vm.titles.shippingAddress,\"model-name\":\"shipping\",\"address\":_vm.draft.order.shippingAddressHtml,\"copy-to-address\":_vm.$options.filters.t('billing address', 'commerce'),\"can-copy-to-user\":_vm.canEditUsers &&\n _vm.draft.order.sourceShippingAddressId == null &&\n _vm.customerId &&\n _vm.draft.order.customer.isCredentialed,\"customer-id\":_vm.draft.order.customerId,\"empty-message\":_vm.$options.filters.t('No shipping address', 'commerce'),\"customer-updated\":_vm.customerUpdatedTime},on:{\"update\":_vm.updateShippingAddress,\"copy\":function($event){return _vm.copyAddress('billing')},\"copyAddressToUser\":function($event){return _vm.copyToUser('shipping')},\"remove\":_vm.removeShippingAddress}})],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OrderErrors.vue?vue&type=template&id=f3765d52&\"\nimport script from \"./OrderErrors.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderErrors.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{'pb-lg': _vm.draftErrors.length}},[(_vm.draftErrors.length)?[_c('h4',{staticClass:\"error\"},[_vm._v(\"\\n \"+_vm._s(this.$options.filters.t(\n 'There are errors on the order',\n 'commerce'\n ))+\"\\n \")]),_vm._v(\" \"),_c('ul',{staticClass:\"errors\"},_vm._l((_vm.draftErrors),function(error,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(error)+\"\\n \")])}),0)]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n {{ 'This order has unsaved changes.' | t('commerce') }}\n
\n \n\n\n\n\n\n","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderSecondaryActions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderSecondaryActions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderSecondaryActions.vue?vue&type=template&id=0a8bd144&\"\nimport script from \"./OrderSecondaryActions.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderSecondaryActions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrderSecondaryActions.vue?vue&type=style&index=0&id=0a8bd144&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(!_vm.editing && !_vm.hasOrderChanged)?_c('div',{staticClass:\"order-flex\"},[(_vm.defaultPdfUrl)?_c('div',[_c('div',{staticClass:\"btngroup\",attrs:{\"id\":\"order-save\"}},[_c('a',{staticClass:\"btn\",attrs:{\"href\":_vm.defaultPdfUrl.url,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm._f(\"t\")('Download PDF','commerce')))]),_vm._v(\" \"),(_vm.pdfUrls.length > 1)?[_c('div',{ref:\"downloadPdfMenuBtn\",staticClass:\"btn menubtn\"}),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',_vm._l((_vm.pdfUrls),function(pdfUrl,key){return _c('li',{key:'pdfUrl' + key},[_c('a',{attrs:{\"href\":pdfUrl.url,\"target\":\"_blank\"}},[_vm._v(_vm._s(pdfUrl.name))])])}),0)])]:_vm._e()],2)]):_vm._e(),_vm._v(\" \"),(_vm.emailTemplates.length > 0)?[_c('div',{staticClass:\"btngroup send-email\"},[_c('div',{ref:\"sendEmailMenuBtn\",staticClass:\"btn menubtn\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Send Email','commerce'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',_vm._l((_vm.emailTemplates),function(emailTemplate,key){return _c('li',{key:'emailTemplate' + key},[_c('a',{attrs:{\"href\":emailTemplate.id},on:{\"click\":function($event){$event.preventDefault();return _vm.sendEmail(emailTemplate.id)}}},[_vm._v(_vm._s(emailTemplate.name))])])}),0)])]),_vm._v(\" \"),(_vm.emailLoading)?_c('div',[_vm._m(0)]):_vm._e()]:_vm._e(),_vm._v(\" \"),(\n !_vm.editing &&\n _vm.totalCommittedStock > 0 &&\n !_vm.hasOrderChanged &&\n _vm.hasLineItems\n )?[_c('button',{staticClass:\"btn fulfillment\",on:{\"click\":function($event){$event.preventDefault();return _vm.handleFulfillment.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"t\")('Fulfillment','commerce'))+\"\\n \")])]:_vm._e()],2):(_vm.hasOrderChanged)?_c('div',[_c('span',[_vm._v(_vm._s(_vm._f(\"t\")('This order has unsaved changes.','commerce')))])]):_vm._e()])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"order-email-spinner\"},[_c('div',{staticClass:\"spinner\"})])\n}]\n\nexport { render, staticRenderFns }","/* jshint esversion: 6, strict: false */\n/* globals Craft */\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport ordersApi from '../api/orders';\nimport addressesApi from '../api/addresses';\nimport utils from '../helpers/utils';\nimport _isEqual from 'lodash.isequal';\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n strict: true,\n state: {\n recalculateLoading: false,\n saveLoading: false,\n editing: false,\n draft: null,\n originalDraft: null,\n customers: [],\n orderData: null,\n recentlyAddedLineItems: [],\n unloadEventInit: false,\n shippingMethodOptions: null,\n },\n\n getters: {\n autoSetNewCartAddresses() {\n return window.orderEdit.autoSetNewCartAddresses;\n },\n\n currentUserId() {\n return window.orderEdit.currentUserId;\n },\n\n currentUserPermissions() {\n return window.orderEdit.currentUserPermissions;\n },\n\n canDelete(state, getters) {\n return getters.currentUserPermissions['commerce-deleteOrders'];\n },\n\n canEdit(state, getters) {\n return getters.currentUserPermissions['commerce-editOrders'];\n },\n\n canEditUsers(state, getters) {\n return getters.currentUserPermissions['editUsers'];\n },\n\n countries() {\n return window.orderEdit.countries;\n },\n\n currencyConfig() {\n return window.orderEdit.currencyConfig;\n },\n\n forceEdit() {\n return window.orderEdit.forceEdit;\n },\n\n emailTemplates() {\n return window.orderEdit.emailTemplates;\n },\n\n ordersIndexUrl() {\n return window.orderEdit.ordersIndexUrl;\n },\n\n hasOrderChanged(state) {\n return !_isEqual(state.draft, state.originalDraft);\n },\n\n orderId() {\n return window.orderEdit.orderId;\n },\n\n totalCommittedStock(state) {\n if (!state.draft) {\n return 0;\n }\n\n return state.draft.order.totalCommittedStock;\n },\n\n taxCategories() {\n return window.orderEdit.taxCategories;\n },\n\n defaultTaxCategoryId() {\n return window.orderEdit.defaultTaxCategoryId;\n },\n\n shippingCategories() {\n return window.orderEdit.shippingCategories;\n },\n\n defaultShippingCategoryId() {\n return window.orderEdit.defaultShippingCategoryId;\n },\n\n statesByCountryId() {\n return window.orderEdit.statesByCountryId;\n },\n\n pdfUrls() {\n return window.orderEdit.pdfUrls;\n },\n\n originalCustomer() {\n return window.orderEdit.originalCustomer;\n },\n\n maxLineItems(state, getters) {\n return null;\n },\n\n canAddLineItem(state, getters) {\n if (!getters.maxLineItems) {\n return true;\n }\n\n if (state.draft.order.lineItems.length < getters.maxLineItems) {\n return true;\n }\n\n return false;\n },\n\n hasAddresses(state) {\n if (!state.draft) {\n return false;\n }\n\n return (\n (state.draft.order.billingAddressId &&\n state.draft.order.shippingAddressId) ||\n (state.draft.order.billingAddress && state.draft.order.shippingAddress)\n );\n },\n\n hasAnAddress(state) {\n if (!state.draft) {\n return false;\n }\n\n return (\n state.draft.order.billingAddressId ||\n state.draft.order.shippingAddressId ||\n state.draft.order.billingAddress ||\n state.draft.order.shippingAddress\n );\n },\n\n hasCustomer(state) {\n if (!state.draft) {\n return false;\n }\n\n return state.draft.order.customerId;\n },\n\n hasLineItems(state) {\n if (!state.draft || !state.draft.order || !state.draft.order.lineItems) {\n return false;\n }\n\n return state.draft.order.lineItems.length > 0;\n },\n\n lineItemStatuses() {\n return window.orderEdit.lineItemStatuses;\n },\n\n lineItemTypes() {\n return window.orderEdit.lineItemTypes;\n },\n\n shippingMethods(state) {\n if (!state.shippingMethodOptions) {\n return [];\n }\n\n return Object.values(state.shippingMethodOptions);\n },\n\n orderStatuses() {\n return window.orderEdit.orderStatuses;\n },\n\n orderSites() {\n return window.orderEdit.orderSites;\n },\n\n store() {\n return window.orderEdit.store;\n },\n\n getErrors(state) {\n return (errorKey) => {\n if (\n state &&\n state.draft &&\n state.draft.order &&\n state.draft.errors &&\n state.draft.errors[errorKey]\n ) {\n return [state.draft.errors[errorKey]];\n }\n\n return [];\n };\n },\n\n hasLineItemErrors(state) {\n return (key) => {\n if (state && state.draft && state.draft.order && state.draft.errors) {\n let errorKeys = Object.keys(state.draft.errors);\n let pattern = '^lineItems\\\\.' + key + '\\\\.';\n let regex = new RegExp(pattern, 'gm');\n for (let i = 0; i < errorKeys.length; i++) {\n let errorKey = errorKeys[i];\n if (errorKey.match(regex)) {\n return true;\n }\n }\n }\n\n return false;\n };\n },\n\n userPhotoFallback() {\n return window.orderEdit.userPhotoFallback;\n },\n },\n\n actions: {\n displayError(context, msg) {\n // Check if `msg` is instance of JavaScript Error object\n if (msg instanceof Error) {\n msg = msg.message;\n }\n\n Craft.cp.displayError(msg);\n },\n\n displayNotice(context, msg) {\n Craft.cp.displayNotice(msg);\n },\n\n disableTransactionsTab() {\n const $transactionsTab = window.document.querySelector(\n '#tabs > div > a[href=\"#transactionsTab\"]'\n );\n\n if (!$transactionsTab) {\n return;\n }\n\n $transactionsTab.classList.add('disabled');\n $transactionsTab.href = '';\n $transactionsTab.classList.remove('sel');\n\n const $transactionsTabClone = $transactionsTab.cloneNode(true);\n\n $transactionsTabClone.addEventListener('click', function (ev) {\n ev.preventDefault();\n });\n\n $transactionsTab.parentNode.replaceChild(\n $transactionsTabClone,\n $transactionsTab\n );\n\n let $transactionsTabContent =\n window.document.querySelector('#transactionsTab');\n $transactionsTabContent.classList.add('hidden');\n\n // for the dropdown tab menu\n const tabManager = Craft.cp.tabManager;\n const tabsDropdownMenu = tabManager.$menuBtn.data('disclosureMenu');\n const transactionsOption = tabsDropdownMenu.$container.find(\n '[data-id=\"order-transactions\"]'\n );\n\n // this will disable clicking on the transactions option in the dropdown tab menu\n if (transactionsOption.length > 0) {\n $(transactionsOption)\n .disable()\n .attr('disabled', 'disabled')\n .css('pointer-events', 'none');\n }\n\n // and this is a fallback for selecting the transactions tab differently\n let $prevSelectedTab = null;\n let $selectedTab = tabManager.$selectedTab[0];\n\n tabManager.on('selectTab', function (ev) {\n $prevSelectedTab = $selectedTab;\n $selectedTab = $(ev.$tab[0]);\n });\n\n tabsDropdownMenu.on('optionselect', function (ev) {\n let $selectedOption = $(ev.selectedOption);\n if ($selectedOption.data('id') === 'order-transactions') {\n $prevSelectedTab.trigger('activate');\n }\n });\n },\n\n edit({commit, state, dispatch}) {\n const $tabLinks = window.document.querySelectorAll('#tabs > div > a');\n let $selectedLink = null;\n let $detailsLink = null;\n let switchToDetailsTab = false;\n\n $tabLinks.forEach(function ($tabLink) {\n if (\n $tabLink.getAttribute('href') === '#orderDetailsTab' &&\n state.draft.order.isCompleted\n ) {\n $detailsLink = $tabLink;\n }\n\n // Disable Transactions tab\n if (\n $tabLink.getAttribute('href') === '#transactionsTab' &&\n state.draft.order.isCompleted\n ) {\n switchToDetailsTab = $tabLink.classList.contains('sel');\n dispatch('disableTransactionsTab');\n }\n\n // Custom tabs\n if ($tabLink.classList.contains('custom-tab')) {\n // Selected link\n if ($tabLink.classList.contains('sel')) {\n $selectedLink = $tabLink;\n }\n\n // Disable static custom field tabs\n if ($tabLink.classList.contains('static')) {\n $tabLink.classList.add('hidden');\n } else {\n $tabLink.classList.remove('hidden');\n }\n }\n });\n\n if (switchToDetailsTab) {\n $detailsLink.classList.add('sel');\n let $detailsTab = window.document.querySelector('#orderDetailsTab');\n $detailsTab.classList.remove('hidden');\n }\n\n // Retrieve dynamic link corresponding to selected static one and click it\n if ($selectedLink && $selectedLink.classList.contains('static')) {\n const staticLink = $selectedLink.getAttribute('href');\n let prefixLength = '#static-'.length;\n const dynamicLink =\n '#' +\n staticLink.substr(prefixLength, staticLink.length - prefixLength);\n\n $tabLinks.forEach(function ($tabLink) {\n if (\n $tabLink.classList.contains('custom-tab') &&\n $tabLink.getAttribute('href') === dynamicLink\n ) {\n const $newSelectedLink = $tabLink;\n $newSelectedLink.click();\n }\n });\n }\n\n // Update `editing` state\n commit('updateEditing', true);\n\n // handle duplicate content (fields) tabs\n dispatch('handleTabs');\n },\n\n handleTabs({state}) {\n const tabManager = Craft.cp.tabManager;\n if (!tabManager || !tabManager.menu) {\n return;\n }\n\n const staticOptions = tabManager.menu.find(\n 'a[data-id^=\"static-fields-\"]'\n );\n const fieldsOptions = tabManager.menu.find('a[data-id^=\"fields-\"]');\n\n if (state.editing) {\n staticOptions.parent().addClass('hidden');\n fieldsOptions.parent().removeClass('hidden');\n } else {\n staticOptions.parent().removeClass('hidden');\n fieldsOptions.parent().addClass('hidden');\n }\n },\n\n getOrder({state, commit}) {\n commit('updateRecalculateLoading', true);\n\n return ordersApi\n .get()\n .then((response) => {\n commit('updateRecalculateLoading', false);\n\n const draft = response.data;\n\n if (!state.originalDraft) {\n const originalDraft = draft;\n commit('updateOriginalDraft', originalDraft);\n }\n\n commit('updateDraft', draft);\n })\n .catch((error) => {\n commit('updateRecalculateLoading', false);\n\n let errorMsg = 'Couldn’t get order.';\n\n if (error.response.data.error) {\n errorMsg = error.response.data.error;\n }\n\n throw errorMsg;\n });\n },\n\n deleteOrder({getters, commit}) {\n commit('updateRecalculateLoading', true);\n\n const orderId = getters.orderId;\n\n return ordersApi.deleteOrder(orderId).then(() => {\n commit('updateRecalculateLoading', false);\n });\n },\n\n customerSearch({commit}, query) {\n return ordersApi.customerSearch(query).then((response) => {\n commit('updateCustomers', response.data.customers);\n });\n },\n\n autoRecalculate({state, dispatch}) {\n const draft = state.draft;\n draft.order.recalculationMode = 'all';\n return dispatch('recalculateOrder', draft);\n },\n\n recalculateOrder({commit}, draft) {\n commit('updateRecalculateLoading', true);\n\n const data = utils.buildDraftData(draft);\n\n // Recalculate\n return ordersApi\n .recalculate(data)\n .then((response) => {\n commit('updateRecalculateLoading', false);\n\n const draft = response.data;\n commit('updateDraft', draft);\n\n if (response.data.error) {\n throw {response};\n }\n })\n .catch((error) => {\n commit('updateRecalculateLoading', false);\n\n let errorMsg = 'Couldn’t recalculate order.';\n\n const draft = error.response.data;\n commit('updateDraft', draft);\n\n if (error.response.data.error) {\n errorMsg = error.response.data.error;\n throw {response};\n }\n\n throw errorMsg;\n });\n },\n\n sendEmail(context, emailTemplateId) {\n return ordersApi.sendEmail(emailTemplateId);\n },\n\n validateAddress(context, address) {\n return addressesApi\n .validate(address)\n .then((response) => {\n if (response.data) {\n return response.data;\n }\n\n return response;\n })\n .catch((error) => {\n let errorMsg = 'Couldn’t validate address.';\n\n if (error.response.data.error) {\n errorMsg = error.response.data.error;\n }\n\n throw errorMsg;\n });\n },\n\n copyAddressToUser(context, {addressId, userId}) {\n return addressesApi\n .copyAddressToUser(addressId, userId)\n .then((response) => {\n if (response.data) {\n return response.data;\n }\n\n return response;\n })\n .catch((error) => {\n let errorMsg = 'Couldn’t copy address.';\n\n if (error.response.data.message) {\n errorMsg = error.response.data.message;\n }\n\n throw errorMsg;\n });\n },\n\n clearRecentlyAddedLineItems({state}) {\n state.recentlyAddedLineItems = [];\n },\n },\n\n mutations: {\n updateEditing(state, editing) {\n if (!state.unloadEventInit && editing) {\n state.unloadEventInit = true;\n // Add event listener for leaving the page\n window.addEventListener('beforeunload', function (ev) {\n // Only check if we are not saving\n if (\n !state.saveLoading &&\n !_isEqual(state.draft, state.originalDraft)\n ) {\n ev.preventDefault();\n ev.returnValue = '';\n }\n });\n }\n\n state.editing = editing;\n },\n\n updateDraft(state, draft) {\n state.draft = draft;\n },\n\n updateDraftSuppressEmails(state, suppressEmails) {\n state.draft.order.suppressEmails = suppressEmails;\n },\n\n updateDraftOrderMessage(state, message) {\n state.draft.order.message = message;\n },\n\n updateOriginalDraft(state, originalDraft) {\n state.originalDraft = originalDraft;\n },\n\n updateCustomers(state, customers) {\n state.customers = customers;\n },\n\n updateRecalculateLoading(state, recalculateLoading) {\n state.recalculateLoading = recalculateLoading;\n },\n\n updateSaveLoading(state, saveLoading) {\n state.saveLoading = saveLoading;\n },\n\n updateOrderData(state, orderData) {\n state.orderData = orderData;\n },\n\n updateRecentlyAddedLineItems(state, lineItemIdentifier) {\n state.recentlyAddedLineItems.push(lineItemIdentifier);\n },\n\n updateShippingMethodOptions(state, shippingMethodOptions) {\n state.shippingMethodOptions = shippingMethodOptions;\n },\n },\n});\n","/* jshint esversion: 6, strict: false */\n/* globals Craft */\n\nimport axios from 'axios/index';\n\nexport default {\n validate(address) {\n const data = {\n address: address,\n };\n return axios.post(\n Craft.getActionUrl('commerce/orders/validate-address'),\n data,\n {\n headers: {\n 'X-CSRF-Token': Craft.csrfTokenValue,\n },\n }\n );\n },\n\n copyAddressToUser(addressId, userId) {\n const data = {addressId: addressId, userId: userId};\n\n return Craft.sendActionRequest(\n 'POST',\n 'commerce/orders/copy-address-to-user',\n {data}\n );\n },\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"order-block py\"},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./OrderBlock.vue?vue&type=template&id=05a503be&\"\nvar script = {}\nimport style0 from \"./OrderBlock.vue?vue&type=style&index=0&id=05a503be&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./OrderTitle.vue?vue&type=template&id=772b8bf0&\"\nvar script = {}\nimport style0 from \"./OrderTitle.vue?vue&type=style&index=0&id=772b8bf0&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('h3',{staticClass:\"order-title\"},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./QtyInput.vue?vue&type=template&id=46cd39af&\"\nimport script from \"./QtyInput.vue?vue&type=script&lang=js&\"\nexport * from \"./QtyInput.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.rowData.isAvailable)?_c('field',{scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.rowData.qty),expression:\"rowData.qty\"}],staticClass:\"text\",attrs:{\"id\":slotProps.id,\"type\":\"text\",\"size\":\"3\",\"placeholder\":\"0\"},domProps:{\"value\":(_vm.rowData.qty)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.rowData, \"qty\", $event.target.value)}}})]}}],null,false,3158077025)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* jshint esversion: 6, strict: false */\n/* globals Craft, process */\nimport Vue from 'vue';\nimport App from './apps/OrderDetails';\nimport 'prismjs/themes/prism.css';\nimport OrderMeta from './apps/OrderMeta';\nimport OrderNotices from './apps/OrderNotices';\nimport OrderActions from './apps/OrderActions';\nimport OrderCustomer from './apps/OrderCustomer';\nimport OrderErrors from './apps/OrderErrors';\nimport OrderSecondaryActions from './apps/OrderSecondaryActions';\nimport store from './store';\nimport {t} from '../base/filters/craft';\nimport BtnLink from '../base/components/BtnLink';\nimport OrderBlock from './components/OrderBlock';\nimport OrderTitle from './components/OrderTitle';\nimport QtyInput from './components/details/QtyInput';\n\nVue.config.productionTip = false;\nif (process.env.NODE_ENV === 'development') {\n Vue.config.devtools = true;\n}\nVue.filter('t', t);\nVue.component('btn-link', BtnLink);\nVue.component('order-block', OrderBlock);\nVue.component('order-title', OrderTitle);\nVue.component('qty-input', QtyInput);\n\n// Order actions\n// =========================================================================\n\nwindow.OrderActionsApp = new Vue({\n render: (h) => h(OrderActions),\n store,\n}).$mount('#order-actions-app');\n\n// Order errors\n// =========================================================================\nwindow.OrderErrorsApp = new Vue({\n render: (h) => h(OrderErrors),\n store,\n}).$mount('#order-errors-app');\n\n// Order customer\n// =========================================================================\nwindow.OrderCustomerApp = new Vue({\n render: (h) => h(OrderCustomer),\n store,\n}).$mount('#order-customer-app');\n\n// Order details\n// =========================================================================\n\nwindow.OrderDetailsApp = new Vue({\n render: (h) => h(App),\n store,\n\n methods: {\n externalRefresh() {\n const draft = this.$store.state.draft;\n this.$store\n .dispatch('recalculateOrder', draft)\n .then(() => {\n this.$store.dispatch(\n 'displayNotice',\n this.$options.filters.t('Order recalculated.', 'commerce')\n );\n })\n .catch((error) => {\n this.$store.dispatch('displayError', error);\n });\n },\n },\n\n mounted() {\n this.$store.dispatch('getOrder').finally(() => {\n if (!this.$store.getters.hasLineItems) {\n this.$store.dispatch('disableTransactionsTab');\n }\n });\n\n this.$store.watch(\n (state, getters) => getters.hasOrderChanged,\n (newVal, oldVal) => {\n if (newVal) {\n this.$store.dispatch('disableTransactionsTab');\n }\n }\n );\n },\n}).$mount('#order-details-app');\n\n// Order meta\n// =========================================================================\n\nwindow.OrderMetaApp = new Vue({\n render: (h) => h(OrderMeta),\n store,\n}).$mount('#order-meta-app');\n\n// Order meta\n// =========================================================================\n\nwindow.OrderNotices = new Vue({\n render: (h) => h(OrderNotices),\n store,\n}).$mount('#order-notices-app');\n\n// Order secondary actions\n// =========================================================================\n\nwindow.OrderSecondaryActionsApp = new Vue({\n render: (h) => h(OrderSecondaryActions),\n store,\n}).$mount('#order-secondary-actions-app');\n","/* global Craft */\n\nexport function t(message, category, params) {\n return Craft.t(category, message, params);\n}\n"],"names":["module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","platform","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","withXSRFToken","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","isFunction","xsrfValue","xsrfHeaderName","xsrfCookieName","read","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","req","abort","subscribe","aborted","protocol","protocols","ERR_BAD_REQUEST","send","bind","Axios","mergeConfig","defaults","formDataToJSON","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","formToJSON","thing","isHTMLForm","FormData","executor","TypeError","resolvePromise","this","promise","token","then","_listeners","i","length","onfulfilled","_resolve","message","reason","throwIfRequested","listener","push","index","splice","source","c","call","ERR_CANCELED","name","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","interceptors","configOrUrl","undefined","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","serialize","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","code","Error","captureStackTrace","constructor","stack","toJSON","description","number","fileName","lineNumber","columnNumber","descriptors","Object","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","obj","cause","assign","handlers","use","options","eject","id","clear","fn","h","isAbsoluteURL","combineURLs","requestedURL","transformData","normalizeHeaderName","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","target","isPlainObject","isEmptyObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","keys","configValue","validateStatus","ERR_BAD_RESPONSE","Math","floor","fns","toURLEncodedForm","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","toString","isFileList","contentType","hasJSONContentType","isObjectPayload","isObject","JSON","stringify","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","formSerializer","_FormData","env","rawValue","isString","parse","trim","e","stringifySafely","JSONRequested","strictJSONParsing","maxContentLength","maxBodyLength","classes","Blob","encode","str","charMap","replace","match","AxiosURLSearchParams","_pairs","append","encoder","_encode","map","pair","join","thisArg","arguments","hashmarkIndex","serializerParams","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","RegExp","decodeURIComponent","remove","now","formData","buildPath","isNumericKey","Number","isFinite","isLast","hasOwnProperty","arr","len","arrayToObject","entries","forEachEntry","matchAll","parsePropPath","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","exec","callback","envFormData","isVisitable","removeBrackets","endsWith","renderKey","dots","predicates","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Symbol","toStringTag","iterator","convertValue","isDate","toISOString","isTypedArray","Buffer","some","isFlatArray","toArray","el","exposedHelpers","build","pop","URLSearchParams","helpers","isNode","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","isBrowser","cache","kindOf","kindOfTest","getPrototypeOf","l","TypedArray","_hasOwnProperty","Uint8Array","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","b","stripBOM","content","charCodeAt","superConstructor","props","sourceObj","destObj","filter","propFilter","merged","getOwnPropertyNames","searchString","position","String","lastIndex","next","regExp","matches","self","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","g","freeSelf","root","Function","objectToString","nativeMax","max","nativeMin","min","toNumber","isObjectLike","isSymbol","other","valueOf","isBinary","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","flush","HASH_UNDEFINED","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","INFINITY","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","reIsUint","typedArrayTags","freeExports","nodeType","freeModule","freeProcess","nodeUtil","binding","nodeIsTypedArray","arraySome","array","predicate","isHostObject","mapToArray","size","setToArray","set","uid","transform","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","reIsNative","propertyIsEnumerable","nativeKeys","arg","DataView","getNative","Map","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","Hash","entry","ListCache","MapCache","SetCache","values","__data__","add","Stack","assocIndexOf","eq","baseGet","object","isKey","castPath","toKey","baseHasIn","baseIsEqual","customizer","bitmask","equalFunc","objIsArr","othIsArr","objTag","othTag","getTag","objIsObj","othIsObj","isSameTag","equalArrays","tag","byteLength","byteOffset","convert","isPartial","stacked","get","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIteratee","identity","srcValue","isStrictComparable","matchesStrictComparable","hasFunc","isLength","isIndex","isArguments","hasPath","hasIn","baseMatchesProperty","matchData","getMatchData","baseIsMatch","basePropertyDeep","stringToPath","arrLength","othLength","seen","arrValue","othIndex","has","getMapData","getValue","isMasked","baseIsNative","pairs","LARGE_ARRAY_SIZE","Ctor","ctorString","memoize","string","baseToString","quote","findIndexFunc","find","fromIndex","remainder","baseFindIndex","collection","iterable","isArrayLike","iteratee","resolver","memoized","Cache","isArrayLikeObject","baseUnary","inherited","n","baseTimes","skipIndexes","arrayLikeKeys","baseKeys","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","asyncTag","nullTag","proxyTag","undefinedTag","moduleExports","nativeObjectToString","symToStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","baseGetTag","isOwn","unmasked","getRawTag","baseIsArguments","getAllKeys","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","resIndex","symbol","arrayFilter","isArr","isArg","isBuff","isType","FUNC_ERROR_TEXT","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","NAN","MAX_ARRAY_LENGTH","wrapFlags","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEsTemplate","reFlags","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","cloneableTags","stringEscapes","freeParseFloat","parseFloat","require","types","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","arrayAggregator","setter","accumulator","arrayEach","arrayEachRight","arrayEvery","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayReduce","initAccum","arrayReduceRight","asciiSize","baseProperty","baseFindKey","eachFunc","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","current","baseTrim","trimmedEndIndex","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","overArg","replaceHolders","placeholder","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","_","runInContext","pick","idCounter","objectCtorString","oldDash","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","ceil","nativeFloor","nativeIsFinite","nativeJoin","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","metaMap","realNames","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","lower","upper","baseClone","isDeep","isFlat","isFull","input","initCloneArray","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","copySymbols","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","subValue","getAllKeysIn","baseConformsTo","baseDelay","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGt","baseHas","baseIntersection","arrays","caches","maxLength","Infinity","baseInvoke","parent","last","objStacked","othStacked","noCustomizer","baseMatches","property","isPrototype","baseLt","baseMap","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","sort","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSortBy","basePickBy","baseSet","basePullAll","basePullAt","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","castSlice","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","createCaseFirst","methodName","createCompounder","words","deburr","createCtor","thisBinding","createFind","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","flatten","otherFunc","stubArray","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","subString","clone","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","WRAP_BIND_FLAG","debounce","timeWaiting","defer","delay","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","lt","lte","iteratorToArray","toLength","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","nativeKeysIn","isProto","baseKeysIn","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","substring","global","newEnd","uniqueId","prefix","each","eachRight","first","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","modules","installedModules","moduleId","m","d","getter","o","enumerable","r","t","mode","__esModule","ns","p","s","anObject","that","ignoreCase","multiline","unicode","sticky","it","is","hide","redefine","fails","defined","wks","KEY","SYMBOL","strfn","rxfn","O","toIObject","toAbsoluteIndex","IS_INCLUDES","$this","arrayIndexOf","names","SPLIT","$split","_split","$push","$SPLIT","LENGTH","LAST_INDEX","NPCG","separator2","lastLength","output","flags","lastLastIndex","splitLimit","separatorCopy","SRC","TO_STRING","$toString","TPL","inspectSource","safe","store","USE_SYMBOL","S","$export","INCLUDES","P","F","dP","createDesc","f","configurable","IE8_DOM_DEFINE","toPrimitive","Attributes","getTime","__webpack_require__","bitmap","writable","MATCH","$match","re","core","SHARED","copyright","ctx","PROTOTYPE","own","out","exp","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","B","expProto","U","W","R","shared","cof","$includes","IObject","$flags","DESCRIPTORS","define","Iterator","node","peeked","closingTag","_revisit","_selects","_rejects","higher","traverse","child","expr","peek","compile","closing","revisit","parentNode","selects","rejects","reset","opening","atOpening","atClosing","prev","select","exprs","peak","abs","matchHtmlRegExp","html","$keys","enumBugKeys","__g","px","__e","regexCache","charSets","default","extras","regex","toRegex","aFunction","UNSCOPABLES","ArrayProto","REPLACE","$replace","searchValue","replaceValue","globals","ret","unique","prefixed","ENDS_WITH","$endsWith","endPosition","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Editor_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","hasOwn","getKeys","isEnum","isEntries","IS_WRAP","C","virtual","NAME","$values","currentScript","scripts","getElementsByTagName","res","src","setPublicPath_i","values_default","now_default","escape_html","escape_html_default","lang","langPrism","node_modules_unescape","unescape_default","dom_iterator","dom_iterator_default","makeSelection","selection","getSelection","focus","removeAllRanges","addRange","selection_range","pos","activeElement","rangeCount","getRangeAt","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","setStart","startContainer","startOffset","atStart","commonAncestorContainer","startindex","setSelection","Node","TEXT_NODE","textContent","olen","collapse","getLine","plain","cursorPos","startSlice","lastNewline","indentRe","deindentSpacesRe","FORBIDDEN_KEYS","ctrl","alt","pauseBreak","capsLock","esc","pageUp","pageDown","home","arrowLeft","arrowUp","arrowRight","arrowDown","printScreen","meta","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","numLock","scrollLock","components_Editorvue_type_script_lang_js_","model","event","emitEvents","Boolean","language","lineNumbers","autoStyleLineNumbers","readonly","undoStack","lineNumbersHeight","undoOffset","undoTimestamp","lastPos","codeData","composing","watch","immediate","handler","newVal","_this","$nextTick","setLineNumbersHeight","_this2","styleLineNumbers","rawLang","Prism","languages","highlight","prism","lineNumbersCount","totalLines","updated","$refs","pre","mounted","_this3","recordChange","getPlain","onPaste","preventDefault","currentCursorPos","text","originalEvent","clipboardData","execCommand","newCursorPos","updateContent","$pre","$once","methods","getComputedStyle","height","$editor","$lineNumbers","$el","querySelector","editorStyles","btlr","bblr","style","handleClick","evt","$emit","_innerHTML","innerHTML","_plain","utils_htmlToPlain","timestamp","record","restoreStackState","_this$undoStack","undo","redo","handleKeyDown","keyCode","ignoreTabKey","_selectionRange","deindent","getDeindentLevel","innerText","_cursorPos","indentation","getIndent","metaKey","ctrlKey","altKey","shiftKey","handleKeyUp","keyupCode","which","Editor","scriptExports","render","hook","staticRenderFns","_compiled","functional","_injectStyles","originalRender","existing","beforeCreate","normalizeComponent","_obj","_vm","_h","$createElement","_c","_self","staticClass","attrs","staticStyle","_v","_l","_s","_e","_g","ref","class","domProps","on","$listeners","VueSelect","mixins","autoscroll","typeAheadPointer","maybeAdjustScroll","dropdownMenu","children","getDropdownViewport","getBoundingClientRect","top","bottom","scrollTop","offsetTop","filteredOptions","selectable","typeAheadToLastSelected","selectedValue","typeAheadUp","typeAheadDown","typeAheadSelect","u","loading","mutableLoading","toggleLoading","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","Deselect","xmlns","width","OpenIndicator","inserted","appendToBody","toggle","left","scrollX","pageXOffset","scrollY","pageYOffset","unbindPosition","calculatePosition","body","appendChild","unbind","removeChild","y","getOwnPropertyDescriptor","v","getOwnPropertyDescriptors","components","directives","disabled","clearable","deselectFromDropdown","searchable","multiple","transition","clearSearchOnSelect","closeOnSelect","label","autocomplete","getOptionLabel","getOptionKey","onTab","selectOnTab","isComposing","taggable","tabindex","pushTags","filterable","filterBy","toLocaleLowerCase","createOption","optionList","resetOnOptionsChange","clearSearchOnBlur","noDrop","inputId","selectOnKeyCodes","searchInputQuerySelector","mapKeydown","dropdownShouldOpen","pushedTags","_value","isTrackingValues","propsData","$data","searchEl","$scopedSlots","selectedOptions","scope","searching","attributes","searchPlaceholder","dropdownOpen","events","compositionstart","compositionend","keydown","onSearchKeyDown","blur","onSearchBlur","onSearchFocus","spinner","noOptions","openIndicator","role","listHeader","listFooter","header","deselect","footer","childComponents","stateClasses","isValueEmpty","optionExists","showClearButton","clearSelection","setInternalValueFromOptions","created","$on","pushTag","findOptionFromReducedValue","isOptionSelected","updateValue","onAfterSelect","optionComparator","toggleDropdown","deselectButtons","clearButton","contains","isOptionDeselectable","closeSearchOptions","maybeDeleteValue","normalizeOptionForSlot","onEscape","mousedown","onMousedown","onMouseUp","_t","refInFor","title","click","_b","rawName","expression","mouseup","mouseover","stopPropagation","display","visibility","ajax","pointer","pointerScroll","locals","listToStyles","parentId","list","styles","newStyles","item","part","css","media","sourceMap","parts","hasDocument","DEBUG","stylesInDom","singletonElement","singletonCounter","isProduction","ssrIdKey","isOldIE","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleElement","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","replacement","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","ssrId","firstChild","_vval","_params","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","arr2","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","_typeof","NIL","buildFromKeys","keyFn","getPath","fallback","__isVuelidateAsyncVm","validationGetters","$invalid","proxy","nestedKeys","refProxy","ruleKeys","rule","$dirty","dirty","$anyDirty","$error","$pending","$anyError","_this4","_this5","getRef","$params","_this6","vals","validations","setDirtyRecursive","newState","validationMethods","$touch","$reset","$flattenParams","isNested","childParams","getterNames","_cachedComponent","_cachedVue","validateModel","_getComponent","Vue","VBase","oldVval","patchChildren","vm","beforeDestroy","getModel","lazyModel","getModelKey","hasIter","ValidationRule","lazyParentModel","rootModel","runRule","pushParams","rawOutput","asyncVm","makePendingAsyncVm","rawParams","popParams","$sub","run","_this7","__ob__","arrayDep","dep","depend","_indirectWatcher","Watcher","lazy","_lastModel","teardown","destroyed","Validation","_this8","k","_this9","keyDefs","getterDefs","methodDefs","iterDefs","$iter","$model","_this10","renderNested","renderRule","GroupValidation","EachValidation","tracker","_this11","trackBy","$trackBy","x","getModelLazy","_this12","_this13","def","usedTracks","track","refVals","$v","getComponent","rootVm","super","getVue","validationMixin","_vuelidate","$destroy","_setTarget","withParams","paramsOrClosure","maybeValidator","withParamsClosure","_len","_key","lastTarget","newTarget","addParams","closure","_len2","_key2","_default","_common","valid","_withParams","parentVm","_email","_required","_interopRequireDefault","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","hasPropertyDescriptor","_interopRequireWildcard","nibbles","nibbleValid","nibble","numeric","hexValid","hex","equalTo","isUndef","isDef","sameVval","vval","createVm","Vm","createKeyToOldIdx","beginIdx","endIdx","addVvals","vvals","startIdx","removeVvals","ch","patchVval","updateVval","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVval","oldEndVval","newEndIdx","newStartVval","newEndVval","updateChildren","vuelidate","__webpack_module_cache__","cachedModule","loaded","__webpack_modules__","definition","globalThis","nmd","Vuex","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","errors","inputClass","instructions","required","lineItem","editing","mapGetters","lineItemStatusId","lineItemStatus","color","onSelectStatus","onOptionSelect","uiLabel","filters","_f","lineItemStatuses","sel","LineItemStatusInput","$event","autoShow","modalClass","resizable","show","showFooter","modal","isVisible","_initModal","onHide","onShow","hideModal","showModal","Field","Modal","PrismEditor","errorKeys","errorValues","isWaiting","renderPrism","showPrismEditor","hasErrors","hasDuplicateKeys","inputType","normalizeOptions","onAddOption","onEditOptions","closeModal","onModalHide","onModalShow","onChange","onOptionsChange","onRemoveOption","prepOptions","updateLineItemOptions","jsonValid","updateLineItem","showForm","row","pt","scopedSlots","_u","slotProps","$set","$$v","hidden","note","privateNote","adjustment","adjustmentKey","errorPrefix","recalculationMode","showLabels","adjustmentOptions","allowedAdjustmentTypes","localAdjustmentAmount","amountNaN","getTypeName","amount","hasAmountErrors","included","isAllowedAdjustmentType","Adjustment","$$selectedVal","selected","adjustmentOption","_i","$$a","$$el","$$c","checked","$$i","getErrors","amountAsCurrency","adjustments","orderId","Adjustments","addAdjustment","lineItemId","sourceSnapshot","authorId","updateAdjustment","removeAdjustment","lightswitchEl","Craft","_m","Lightswitch","attribute","handleChange","fieldLabel","showSnapshot","VSelect","selectClass","searchInputName","preFiltered","clearOnBlur","onSearch","searchText","getSearchEvents","onOptionClick","onOptionCreated","LineItemStatus","LineItemOptions","LineItemNotes","LineItemAdjustments","LineItemProperty","SelectInput","Snapshot","lineItemKey","editMode","maskOptions","alias","autoGroup","clearMaskOnLostFocus","digits","digitsOptional","groupSeparator","radixPoint","originalLineItem","priceInput","promotionalPriceInput","mapState","draft","recentlyAddedLineItems","sku","shippingCategoryId","taxCategoryId","promotionalPrice","price","qty","shippingCategory","shippingCategoryOptions","taxCategoryOptions","taxCategory","highlightLineItem","mapActions","enableEditMode","applyEdit","cancelEdit","_initSnapshotModal","openSnapshotModal","closeSnapshotModal","onHideSnapshotModal","removeLineItem","updateLineItemStatusId","onPriceChange","onPromotionalPriceChange","initPriceInputs","nullable","LineItem","hasLineItemErrors","lineItemTypes","Custom","purchasableCpEditUrl","canEdit","totalCommittedStock","fulfilledTotalQuantity","salePriceAsCurrency","onPromotion","priceAsCurrency","promotionalAmountAsCurrency","subtotalAsCurrency","totalAsCurrency","snapshot","lineItems","addLineItem","fields","loadOnStart","apiUrl","httpMethod","reactiveApiUrl","apiMode","dataTotal","dataManager","dataPath","paginationPath","queryParams","page","perPage","appendParams","httpOptions","httpFetch","initialPage","sortOrder","multiSort","tableHeight","multiSortKey","rowClassCallback","rowClass","detailRowComponent","detailRowTransition","tableClass","loadingClass","ascendingIcon","descendingIcon","ascendingClass","descendingClass","sortableIcon","detailRowClass","handleIcon","tableBodyClass","tableHeaderClass","minRows","silent","noDataTemplate","showSortIcons","eventPrefix","tableFields","tableData","tablePagination","currentPage","selectedTo","visibleDetailRows","lastScrollPosition","scrollBarWidth","scrollVisible","normalizeFields","normalizeSortOrder","isFixedHeader","getScrollBarWidth","fireEvent","loadData","elem","getElementsByClassName","handleScroll","useDetailRow","countVisibleFields","field","visible","countTableData","displayEmptyDataRow","lessThanMinRows","blankRows","isApiMode","isDataMode","inner","widthWithoutScrollbar","offsetWidth","overflow","widthWithScrollbar","horizontal","currentTarget","scrollLeft","setTitle","titleClass","dataClass","sortField","getObjectValue","fixHeader","isSpecialField","titleCase","getTitle","renderTitle","isInCurrentSortGroup","hasSortableIcon","sortIconOpacity","renderIconTag","sortIcon","renderSequence","renderNormalField","hasCallback","callCallback","fieldName","txt","substr","delimiter","notIn","success","loadSuccess","failed","loadFailed","getAppendParams","getAllQueryParams","fetch","catch","callDataManager","scrollHeight","clientHeight","parentFunctionExists","$parent","callParentFunction","eventName","msg","getSortParam","getDefaultSortParam","direction","extractName","extractArgs","isSortable","currentSortOrderPosition","fieldIsInSortOrderPosition","multiColumnSort","singleColumnSort","clearSortOrder","sortClass","cls","toggleCheckbox","dataItem","isChecked","idColumn","selectId","unselectId","isSelectedRow","rowSelected","checkCheckboxesState","selector","els","querySelectorAll","cb","indeterminate","toggleAllCheckboxes","gotoPreviousPage","gotoNextPage","last_page","gotoPage","isVisibleDetailRow","rowId","showDetailRow","hideDetailRow","toggleDetailRow","showField","hideField","toggleField","renderIcon","makePagination","total","onRowClass","onRowChanged","onRowClicked","onRowDoubleClicked","onDetailRowClick","onCellClicked","onCellDoubleClicked","onCellRightClicked","changePage","reload","refresh","resetData","oldVal","fieldIndex","itemIndex","wrapperClass","activeClass","disabledClass","pageClass","linkClass","paginationClass","paginationInfoClass","dropdownClass","icons","onEachSide","totalPage","isOnFirstPage","current_page","isOnLastPage","notEnoughPages","windowSize","windowStart","loadPage","isCurrentPage","setPaginationData","itemLabels","singular","plural","paginationLabel","to","items","actionUrl","confirmationMessage","failMessage","successMessage","escapeHtml","confirm","confirmDelete","continueDelete","sendActionRequest","cp","displayNotice","displayError","selectAll","checks","allowMultiple","enabled","ids","icon","button","buttonDisabled","tokenName","csrfTokenName","tokenValue","csrfTokenValue","param","finally","form","submit","enableButton","isMenuButtonInitialised","enable","disableButton","disable","actionsList","_tmpActionsList","hasMultipleSelected","isMenuButton","initUiElements","$","menubtn","actList","ind","act","rowData","rowIndex","addDelimiter","listKeys","detail","showAsList","btnClass","isEnabled","buttonClass","linkHref","ui","createCopyTextBtn","_objectSpread2","_extends","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","off","msMatchesSelector","webkitMatchesSelector","getParentOrHost","closest","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","defaultView","currentStyle","matrix","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","tagName","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","elRect","right","innerHeight","innerWidth","containerRect","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","Sortable","ghost","dragged","draggable","lastChild","lastElementChild","previousElementSibling","nodeName","getRelativeScrollOffset","offsetLeft","winScroller","includeSelf","gotSelf","clientWidth","scrollWidth","elemCSS","overflowX","overflowY","isRectEqual","rect1","rect2","ms","scrollBy","Polymer","jQuery","Zepto","dom","cloneNode","expando","plugins","initializeByDefault","PluginManager","mount","plugin","pluginName","pluginEvent","sortable","eventCanceled","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_excluded","_ref","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_objectWithoutProperties","dragEl","parentEl","ghostEl","rootEl","nextEl","lastDownEl","cloneEl","cloneHidden","dragStarted","moved","putSortable","activeSortable","active","oldIndex","oldDraggableIndex","newIndex","newDraggableIndex","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","targetEl","toEl","fromEl","extraEventProperties","onName","CustomEvent","createEvent","initEvent","bubbles","cancelable","pullMode","lastPutMode","allEventProperties","dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","sameGroup","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","threshold","emptyInsertThreshold","rect","insideHorizontally","insideVertically","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","animationCallbackId","animationStates","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","dataTransfer","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","captureAnimationState","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","indexOfObject","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","repaint","animated","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","_nextTick","_cancelNextTick","_getDirection","touch","pointerType","originalTarget","composedPath","inputs","idx","_saveInputCheckedState","isContentEditable","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","_onTouchMove","_onDragStart","empty","_dragStarted","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","removeAttribute","_hideClone","cloneId","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","_ghostIsFirst","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","save","handleEvent","dropEffect","_globalDragOver","order","getAttribute","useAnimation","destroy","dst","nextTick","cancelNextTick","detectDirection","element","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","AdminTableCopyTextButton","AdminTableActionButton","AdminTableCheckbox","AdminTableDeleteButton","AdminTablePagination","AdminTableButton","Vuetable","allowMultipleSelections","beforeDelete","buttons","checkboxes","checkboxStatus","columns","deleteAction","deleteCallback","deleteConfirmationMessage","deleteFailMessage","deleteSuccessMessage","emptyMessage","fullPage","fullPane","minItems","padded","reorderAction","reorderSuccessMessage","reorderFailMessage","tableDataEndpoint","onLoaded","onLoading","onData","onPagination","onSelect","detailRow","AdminTableDetailRow","dragging","isLoading","searchClearTitle","searchTerm","tableBodySelector","init","tableBody","canReorder","onSort","handleReorder","onStart","startReorder","onEnd","endReorder","vuetable","handleSelectAll","ev","elements","dataset","startPosition","addCheck","handleOnSelectCallback","removeCheck","handleSearch","tableLength","disabledCheckboxesCount","handleDetailRow","deselectAll","delete","onLoadSuccess","emitData","onPaginationData","paginationData","pagination","onChangePage","tableId","getActionUrl","canDelete","checkboxCount","customColumns","searchPlaceholderText","showToolbar","tableCss","checkbox","tablepane","menu","_showDelete","AdminTable","selectedPurchasables","currentTableData","purchasableTableColumns","purchasables","formDisabled","submitDisabled","endpoint","lineItemAdd","purchasableId","purchasable","lut","isCheckboxEnabled","handleCheckboxSelect","handleTableData","deep","AddLineItem","LineItems","OrderAdjustments","BtnLink","addOrderAdjustment","updateOrderAdjustment","removeOrderAdjustment","isCompleted","Total","totalPriceAsCurrency","recalculateLoading","saveLoading","originalDraft","lineItemsErrors","orderAdjustments","purchasableIds","updateLineItems","updateOrderAdjustments","recalculate","autoRecalculate","dispatch","lineItemError","lineItemsErrorsKey","originalOrderStatusId","suppressEmails","isRecalculating","textareaHasFocus","orderMessage","originalMessage","orderStatus","orderStatusId","orderStatuses","originalOrderSiteId","orderSite","orderSiteId","onSelectSite","orderSites","site","buildDraftData","draftData","customerId","couponCode","shippingMethodHandle","shippingMethodName","shippingAddressId","shippingAddress","billingAddressId","billingAddress","dateOrdered","notices","adminNotices","sourceBillingAddressId","sourceShippingAddressId","timezone","parseInputValue","_lineItem","hasFreeShipping","isPromotable","isShippable","isTaxable","_adjustment","_orderAdjustment","parsedValue","showSelect","selectedShippingMethod","shippingMethods","currentMethodName","noneShippingMethod","matchesOrder","orderShippingMethodHandle","onEdit","ordersApi","setShippingMethod","selectedOption","saveOrder","$store","dataString","DateOrderedInput","date","dateValue","timeValue","onDateChange","onDateInput","defaultDate","OrderSite","OrderStatus","ShippingMethod","couponCodeLocal","couponCodeInvalid","shippingMethod","onCouponCodeFocus","onCouponCodeInput","onCouponCodeBlur","markAsCompleted","updateOrder","updateDateOrderedInput","originLabel","origin","handleSuppressEmailsChange","_k","hasCustomer","orderStatusHtml","shortNumber","orderShortNumber","orderNumber","paidStatusHtml","totalPaid","totalPaidAsCurrency","datePaid","dateAuthorized","dateUpdated","lastIp","orderCompletedEmail","email","regularNotices","showAdminNotices","showNotices","dismissAdminNotice","clearNotices","notice","os","shortcutKey","UpdateOrderBtn","OptionShortcutLabel","ordersIndexUrl","orderData","deleteOrder","returnToOrders","hasAddresses","redirect","$tabLinks","$tabLink","$selectedTabLink","$newSelectedTabHash","edit","customer","showRemove","colors","getBgColor","getDisplayName","customerName","initialChar","avatarClass","cl","removeButtonLabel","photo","photoThumbUrl","cpEditUrl","canEditUsers","addressModel","addresses","isLoadingMore","selectedAddress","isDoneDisabled","canSelectAddress","isLoadMoreVisible","getAddresses","per_page","loadMore","close","address","_q","AddressSelect","canCopyToUser","copyToAddress","disclosureMenu","disclosureId","emptyMsg","handleEditAddress","ownerId","slideout","siteId","draftId","instances","$titleField","handleNewAddress","elementType","elementId","addressId","handleSelect","handleCopy","handleCopyToUser","handleRemove","hideDisclosureMenu","Customer","customerSearchRequest","selectedCustomer","newCustomerEmail","customers","onCreated","query","AddressEdit","CustomerSelect","customerUpdatedTime","customerUrl","titles","hasBillingAddress","hasShippingAddress","copyAddress","destinationAddress","_copy","copyToUser","userId","updateBillingAddress","updateShippingAddress","removeBillingAddress","removeShippingAddress","updateAddress","updateCustomer","removeCustomer","customerDeleted","hasAnAddress","billingAddressHtml","shippingAddressHtml","isCredentialed","draftErrors","emailLoading","fulfillmentModal","defaultPdfUrl","handleFulfillment","sendEmail","hasOrderChanged","pdfUrls","pdfUrl","emailTemplates","emailTemplate","hasLineItems","strict","unloadEventInit","shippingMethodOptions","getters","autoSetNewCartAddresses","orderEdit","currentUserId","currentUserPermissions","countries","currencyConfig","forceEdit","_isEqual","taxCategories","defaultTaxCategoryId","shippingCategories","defaultShippingCategoryId","statesByCountryId","originalCustomer","maxLineItems","canAddLineItem","errorKey","userPhotoFallback","disableTransactionsTab","$transactionsTab","$transactionsTabClone","replaceChild","tabManager","tabsDropdownMenu","$menuBtn","transactionsOption","$container","attr","$prevSelectedTab","$selectedTab","$tab","trigger","$selectedLink","$detailsLink","switchToDetailsTab","staticLink","dynamicLink","handleTabs","staticOptions","fieldsOptions","addClass","removeClass","getOrder","errorMsg","customerSearch","recalculateOrder","emailTemplateId","validateAddress","addressesApi","copyAddressToUser","clearRecentlyAddedLineItems","mutations","updateEditing","returnValue","updateDraft","updateDraftSuppressEmails","updateDraftOrderMessage","updateOriginalDraft","updateCustomers","updateRecalculateLoading","updateSaveLoading","updateOrderData","updateRecentlyAddedLineItems","lineItemIdentifier","updateShippingMethodOptions","isAvailable","productionTip","category","OrderBlock","OrderTitle","QtyInput","OrderActionsApp","OrderActions","$mount","OrderErrorsApp","OrderErrors","OrderCustomerApp","OrderCustomer","OrderDetailsApp","App","externalRefresh","OrderMetaApp","OrderMeta","OrderNotices","OrderSecondaryActionsApp","OrderSecondaryActions"],"sourceRoot":""} \ No newline at end of file diff --git a/src/web/assets/commercewidgets/dist/CommerceWidgets.js b/src/web/assets/commercewidgets/dist/CommerceWidgets.js deleted file mode 100644 index 9772bbdfeb..0000000000 --- a/src/web/assets/commercewidgets/dist/CommerceWidgets.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}"undefined"===t(Craft.Commerce)&&(Craft.Commerce={}),Craft.Commerce.createDateRangePicker=function(t){var e=!1,r=t.onChange||$.noop;t=$.extend({},t,{onChange:function(t,o,a){e&&r(t,o,a)}});var o=Craft.ui.createDateRangePicker(t);return e=!0,o},Craft.Commerce.CommerceWidgets={updateOrderStatuses:function(t,e){var r=$("#".concat(e,' [data-attribute="orderStatuses"] .selectize select'));if(r){var o=r[0].selectize;Craft.sendActionRequest("get","commerce/order-statuses/get-order-statuses",{params:{storeId:t}}).then((function(t){t.data.orderStatuses,o.clear(!0),o.clearOptions(!0),t.data.orderStatuses.forEach((function(t){o.addOption({text:t.name,value:t.uid,status:t.color})})),o.refreshOptions(!1)})).catch((function(t){Craft.cp.displayError(t)}))}else Craft.cp.displayError("Could not find order status field.")}}}(); -//# sourceMappingURL=CommerceWidgets.js.map \ No newline at end of file diff --git a/src/web/assets/commercewidgets/dist/CommerceWidgets.js.map b/src/web/assets/commercewidgets/dist/CommerceWidgets.js.map deleted file mode 100644 index f82b9d192d..0000000000 --- a/src/web/assets/commercewidgets/dist/CommerceWidgets.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommerceWidgets.js","mappings":"kPAG8C,cAA1C,EAAOA,MAAMC,YACfD,MAAMC,SAAW,CAAC,GAKpBD,MAAMC,SAASC,sBAAwB,SAAUC,GAC/C,IAAIC,GAAc,EACdC,EAAeF,EAAOG,UAAYC,EAAEC,KAExCL,EAASI,EAAEE,OAAO,CAAC,EAAGN,EAAQ,CAC5BG,SAAU,SAAUI,EAAOC,EAAKC,GACzBR,GAGLC,EAAaK,EAAOC,EAAKC,EAC3B,IAGF,IAAIC,EAAOb,MAAMc,GAAGZ,sBAAsBC,GAE1C,OADAC,GAAc,EACPS,CACT,EAGAb,MAAMC,SAASc,gBAAkB,CAC/BC,oBAAqB,SAAUC,EAASC,GACtC,IAAMC,EAAoBZ,EAAE,IAAD,OACrBW,EAAW,wDAGjB,GAAKC,EAAL,CAKA,IAAMC,EAAYD,EAAkB,GAAGC,UAGvCpB,MAAMqB,kBACJ,MACA,6CACA,CAACC,OAAQ,CAACL,QAAAA,KAETM,MAAK,SAACC,GACiBA,EAASC,KAAKC,cACpCN,EAAUO,OAAM,GAChBP,EAAUQ,cAAa,GAEvBJ,EAASC,KAAKC,cAAcG,SAAQ,SAACC,GACnCV,EAAUW,UAAU,CAClBC,KAAMF,EAAYG,KAClBC,MAAOJ,EAAYK,IACnBC,OAAQN,EAAYO,OAExB,IAEAjB,EAAUkB,gBAAe,EAC3B,IAAE,OACK,SAACC,GACNvC,MAAMwC,GAAGC,aAAaF,EACxB,GA3BF,MAFEvC,MAAMwC,GAAGC,aAAa,qCA8B1B,E","sources":["webpack:///./CommerceWidgets.js"],"sourcesContent":["/* jshint esversion: 6 */\n/* globals Craft, Garnish, $, htmx */\n\nif (typeof Craft.Commerce === typeof undefined) {\n Craft.Commerce = {};\n}\n\n// Wraps Craft.ui.createDateRangePicker, suppressing onChange during initialization\n// so that restoring a saved custom date range does not overwrite the stored values.\nCraft.Commerce.createDateRangePicker = function (config) {\n var initialized = false;\n var userOnChange = config.onChange || $.noop;\n\n config = $.extend({}, config, {\n onChange: function (start, end, handle) {\n if (!initialized) {\n return;\n }\n userOnChange(start, end, handle);\n },\n });\n\n var $btn = Craft.ui.createDateRangePicker(config);\n initialized = true;\n return $btn;\n};\n\n// Instantiate the CommerceWidgets as a global object\nCraft.Commerce.CommerceWidgets = {\n updateOrderStatuses: function (storeId, selectizeId) {\n const $selectizeElement = $(\n `#${selectizeId} [data-attribute=\"orderStatuses\"] .selectize select`\n );\n\n if (!$selectizeElement) {\n Craft.cp.displayError('Could not find order status field.');\n return;\n }\n\n const selectize = $selectizeElement[0].selectize;\n\n // Retrieve the order statuses for the store\n Craft.sendActionRequest(\n 'get',\n 'commerce/order-statuses/get-order-statuses',\n {params: {storeId}}\n )\n .then((response) => {\n const orderStatuses = response.data.orderStatuses;\n selectize.clear(true);\n selectize.clearOptions(true);\n\n response.data.orderStatuses.forEach((orderStatus) => {\n selectize.addOption({\n text: orderStatus.name,\n value: orderStatus.uid,\n status: orderStatus.color,\n });\n });\n\n selectize.refreshOptions(false);\n })\n .catch((error) => {\n Craft.cp.displayError(error);\n });\n },\n};\n"],"names":["Craft","Commerce","createDateRangePicker","config","initialized","userOnChange","onChange","$","noop","extend","start","end","handle","$btn","ui","CommerceWidgets","updateOrderStatuses","storeId","selectizeId","$selectizeElement","selectize","sendActionRequest","params","then","response","data","orderStatuses","clear","clearOptions","forEach","orderStatus","addOption","text","name","value","uid","status","color","refreshOptions","error","cp","displayError"],"sourceRoot":""} \ No newline at end of file diff --git a/src/web/assets/coupons/dist/coupons.js b/src/web/assets/coupons/dist/coupons.js deleted file mode 100644 index 56a5e78365..0000000000 --- a/src/web/assets/coupons/dist/coupons.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){var e={431:function(){},456:function(e,t,n){var a=n(431);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[e.id,a,""]]),a.locals&&(e.exports=a.locals),(0,n(54).A)("7d5b639c",a,!0,{})},54:function(e,t,n){"use strict";function a(e,t){for(var n=[],a={},o=0;on.parts.length&&(a.parts.length=n.parts.length)}else{var i=[];for(o=0;o0&&void 0!==arguments[0]&&arguments[0]&&(this.$couponsContainer.find("button.btn.add").off("click"),this.couponsTable.find("tbody button.delete").off("click")),this.addListener(this.$generateBtn,"click","showGenerateHud"),this.$couponsContainer.find("button.add").on("click",(function(t){t.preventDefault();var n=e.couponsTable.find("tbody tr").length;e.createRow(n,"",null),e.couponsTable.removeClass("hidden"),e.eventListeners(!0)})),this.couponsTable.find("tbody button.delete").on("click",(function(t){t.preventDefault(),$(t.currentTarget).closest("tr").remove(),e.couponsTable.find("tbody tr").length||e.couponsTable.addClass("hidden")}))},showGenerateHud:function(){if(!this.hud)return this.$generateHudBody=$("
").attr("id","commerce-coupons-hud"),this.$hudCountField=Craft.ui.createTextField({label:Craft.t("commerce","Number of Coupons"),name:"couponCount",type:"number",value:1,max:400}).appendTo(this.$generateHudBody),this.$hudFormatField=Craft.ui.createTextField({label:Craft.t("commerce","Generated Coupon Format"),name:"couponFormat",type:"text",instructions:Craft.t("commerce","The format used to generate new coupons, e.g. {example}. Any `#` characters will be replaced with a random letter.",{example:"`summer_####`"}),value:this.settings.couponFormat}),this.$generateHudBody.append(this.$hudFormatField),this.$hudMaxUsesField=Craft.ui.createTextField({label:Craft.t("commerce","Max Uses"),name:"maxUses",type:"number",value:"",max:400}),this.$generateHudBody.append(this.$hudMaxUsesField),this.$hudSubmitButton=Craft.ui.createSubmitButton({spinner:!0}).appendTo(this.$generateHudBody),void(this.hud=new Garnish.HUD(this.$generateBtn,this.$generateHudBody,{hudClass:"hud",onSubmit:$.proxy(this,"generateCoupons")}));this.hud.show()},generateCoupons:function(){var e=this;if(this.$hudSubmitButton.addClass("loading"),Craft.ui.clearErrorsFromField(this.$hudFormatField),-1===this.$hudFormatField.find("input").val().indexOf("#"))return Craft.ui.addErrorsToField(this.$hudFormatField,[Craft.t("commerce","Coupon format is required and must contain at least one `#`.")]),void this.$hudSubmitButton.removeClass("loading");Craft.sendActionRequest("POST","commerce/discounts/generate-coupons",{data:this.getGenerateData()}).then((function(t){e.$couponFormatField.val(e.$hudFormatField.find("input").val());var n=t.data.coupons;n&&e.addCodes(n),e.hud.hide()})).catch((function(t){var n=t.response;n.data.message&&Craft.ui.addErrorsToField(e.$hudFormatField,[n.data.message])})).finally((function(){e.$hudSubmitButton.removeClass("loading")}))},addCodes:function(e){var t=this;if(e&&e.length){var n=this.couponsTable.find("tbody tr").length,a=this.hud.$main.find('input[name="maxUses"]').val();e.forEach((function(e){t.createRow(n,e,a),n++})),this.couponsTable.removeClass("hidden"),this.eventListeners(!0)}},createRow:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=$("");a.data("id",e);var o=$("");o.addClass("hidden singleline-cell textual");var r=$("